diff options
-rw-r--r-- | stapfuncs.3stap.in | 6 | ||||
-rw-r--r-- | tapset/context.stp | 13 | ||||
-rwxr-xr-x | testsuite/buildok/context_test.stp | 1 |
3 files changed, 20 insertions, 0 deletions
diff --git a/stapfuncs.3stap.in b/stapfuncs.3stap.in index b9326fde..518ff2bb 100644 --- a/stapfuncs.3stap.in +++ b/stapfuncs.3stap.in @@ -210,6 +210,12 @@ Return the id of the current process. ppid:long () Return the id of the parent process. .TP +pgrp:long () +Return the pgrp of the current process. +.TP +sid:long () +Return the sid of the current process. +.TP uid:long () Return the uid of the current process. .TP diff --git a/tapset/context.stp b/tapset/context.stp index 468421ae..5be9f21f 100644 --- a/tapset/context.stp +++ b/tapset/context.stp @@ -64,6 +64,19 @@ function ppid:long () %{ /* pure */ %} /** + * sfunction pgrp - Returns the process group ID of the current process. + */ +function pgrp:long () %{ /* pure */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) + struct signal_struct *ss = kread( &(current->signal) ); + THIS->__retvalue = kread ( &(ss->pgrp) ); + CATCH_DEREF_FAULT(); +#else + THIS->__retvalue = task_pgrp_nr_ns(current, &init_pid_ns); +#endif +%} + +/** * sfunction sid - Returns the session ID of the current process. * * The session ID of a process is the process group ID of the session diff --git a/testsuite/buildok/context_test.stp b/testsuite/buildok/context_test.stp index acc4ea07..e58c8997 100755 --- a/testsuite/buildok/context_test.stp +++ b/testsuite/buildok/context_test.stp @@ -18,5 +18,6 @@ probe begin { printf("gid is %d\n", gid()) printf("egid is %d\n", egid()) printf("pp is %s\n", pp()) + printf("pgrp is %d\n", pgrp()) printf("sid is %d\n", sid()) } |