#! stap

# test the system() function

global saw_echo, did_cat

%(runtime == "kernel" %?
probe kernel.function("do_sys_open")
%: 
# The dyninst runtime doesn't have kernel.function probes. Instead,
# we'll just use a begin probe to run system().
probe begin
%)
{
  if (!saw_echo) {
    # very inefficient. Testing only. DO NOT DO THIS
    msg="echo do_sys_open"
    system(msg)
    saw_echo = 1
  }
}

probe timer.ms(100) {
  # should fail	
  if (!did_cat) {
    system("cat __xyzzy123ABC__")
    did_cat = 1
  }
}

probe timer.ms(150) { 
	if (saw_echo && did_cat)
		exit() 
}

probe begin {
  # should succeed
  system("whoami")
}

probe end {
  # should succeed
  system("echo DONE")
}
