summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrzemyslaw Pawelczyk <przemyslaw@pawelczyk.it>2009-06-13 16:58:30 +0200
committerJosh Stone <jistone@redhat.com>2009-06-15 12:50:29 -0700
commit74f2951cc3b5d4f3716e23d284a2b3a0767eb5c2 (patch)
treeadda1b9bef83534b81867075de1329b463963945
parent5111fc3e27f24347f61db6465da934a19b553ee6 (diff)
downloadsystemtap-steved-74f2951cc3b5d4f3716e23d284a2b3a0767eb5c2.tar.gz
systemtap-steved-74f2951cc3b5d4f3716e23d284a2b3a0767eb5c2.tar.xz
systemtap-steved-74f2951cc3b5d4f3716e23d284a2b3a0767eb5c2.zip
Add pgrp() context tapset function. Describe sid().
* tapset/context.stp: Add pgrp() function. * testsuite/buildok/context_test.stp: Add pgrp() call. * stapfuncs.3stap.in: Describe pgrp() and sid(). Signed-off-by: Josh Stone <jistone@redhat.com>
-rw-r--r--stapfuncs.3stap.in6
-rw-r--r--tapset/context.stp13
-rwxr-xr-xtestsuite/buildok/context_test.stp1
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())
}