diff options
author | srikar <srikar> | 2007-09-04 10:36:59 +0000 |
---|---|---|
committer | srikar <srikar> | 2007-09-04 10:36:59 +0000 |
commit | 86963113d4e3b10cd08389873c0eff62ba79f516 (patch) | |
tree | 1a7dd6fc33e2475dc26a2c298a6b8f599ce1d640 | |
parent | c4830239d5dc029bd935e0903a417815b894c96a (diff) | |
download | systemtap-steved-86963113d4e3b10cd08389873c0eff62ba79f516.tar.gz systemtap-steved-86963113d4e3b10cd08389873c0eff62ba79f516.tar.xz systemtap-steved-86963113d4e3b10cd08389873c0eff62ba79f516.zip |
Added open_file_handles tapset function and man page for task tapsets.
-rw-r--r-- | man/ChangeLog | 5 | ||||
-rw-r--r-- | man/stapprobes.task.5.in | 207 | ||||
-rw-r--r-- | tapset/task.stp | 34 | ||||
-rwxr-xr-x | testsuite/buildok/task_test.stp | 2 |
4 files changed, 248 insertions, 0 deletions
diff --git a/man/ChangeLog b/man/ChangeLog index 8423dc27..98c22b84 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ + +2007-09-04 Srinivasa DS <srinivasa@in.ibm.com> + + * stapprobes.task.5.in: New task tapset man page. + 2007-01-23 Mike Mason <mmlnx@us.ibm.com> * stapprobes.socket.5.in: New sockets tapset man page. diff --git a/man/stapprobes.task.5.in b/man/stapprobes.task.5.in new file mode 100644 index 00000000..83d887e6 --- /dev/null +++ b/man/stapprobes.task.5.in @@ -0,0 +1,207 @@ +.\" -*- nroff -*- +.TH STAPPROBES.TASK 5 @DATE@ "IBM" +.SH NAME +stapprobes.task \- systemtap task information + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of tapset functions is used to collect information about tasks. +It contains the following functions. + +.P +.TP +.B task_current:long() + +Return the task_struct of the current process. + +.P +.TP +.B task_parent:long(task:long) + +Return the parent task_struct of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP +.B task_state:long(task:long) + +Return the state of the given task. State of the task could be, one among the following. + + TASK_RUNNING 0 + TASK_INTERRUPTIBLE 1 + TASK_UNINTERRUPTIBLE 2 + TASK_STOPPED 4 + TASK_TRACED 8 + EXIT_ZOMBIE 16 + EXIT_DEAD 32 + + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP +.B task_execname:string(task:long) + +Return the name of the given task. + +.B Arguments: + +.I task + task_struct of the task. + + +.P +.TP +.B task_pid:long(task:long) + +Return the process id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP +.B task_tid:long(task:long) + +Return the thread id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_gid:long(task:long) + +Return the group id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_egid:long(task:long) + +Return the effective group id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_uid:long(task:long) + +Return the user id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_euid:long(task:long) + +Return the effective user id of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_prio:long(task:long) + +Return the priority of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_nice:long(task:long) + +Return the nice value of the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_cpu:long(task:long) + +Return the scheduled cpu for the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_open_file_handles:long(task:long) + +Return the number of open file handles for the given task. + +.B Arguments: + +.I task + task_struct of the task. + +.P +.TP + +.B task_max_file_handles:long(task:long) + +Return the maximum number of file handles for the given task. + +.B Arguments: + +.I task + task_struct of the task. + + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (5), + diff --git a/tapset/task.stp b/tapset/task.stp index 97ae5c7e..947351c6 100644 --- a/tapset/task.stp +++ b/tapset/task.stp @@ -6,6 +6,10 @@ // Public License (GPL); either version 2, or (at your option) any // later version. +%{ +#include <linux/version.h> +#include <linux/file.h> +%} // Return the task_struct representing the current process function task_current:long () %{ /* pure */ @@ -125,3 +129,33 @@ function task_cpu:long (task:long) CATCH_DEREF_FAULT(); %} %) + + +// Return the number of open file handlers for the given task +function task_open_file_handles:long (task:long) %{ /* pure */ + struct task_struct *t = (struct task_struct *)(long)THIS->task; + struct files_struct *f = kread(&(t->files)); + struct fdtable *fdt = kread(&(f->fdt)); + unsigned int count=0, fd, max; + rcu_read_lock(); + max = kread(&(fdt->max_fds)); + for (fd = 0; fd < max; fd++) { + if ( kread(&(fdt->fd[fd])) != NULL) + count ++; + } + rcu_read_unlock(); + THIS->__retvalue = count; + CATCH_DEREF_FAULT(); +%} + + +// Return the maximum number of file handlers for the given task +function task_max_file_handles:long (task:long) %{ /* pure */ + struct task_struct *t = (struct task_struct *)(long)THIS->task; + struct files_struct *f = kread (&(t->files)); + struct fdtable *fdt = kread(&(f->fdt)); + rcu_read_lock(); + THIS->__retvalue = kread(&(fdt->max_fds)); + rcu_read_unlock(); + CATCH_DEREF_FAULT(); +%} diff --git a/testsuite/buildok/task_test.stp b/testsuite/buildok/task_test.stp index 17fa7fb3..c8da7da5 100755 --- a/testsuite/buildok/task_test.stp +++ b/testsuite/buildok/task_test.stp @@ -14,5 +14,7 @@ probe begin { log(sprint(task_prio(c))) log(sprint(task_nice(c))) log(sprint(task_cpu(c))) + log(sprint(task_open_file_handles(c))) + log(sprint(task_max_file_handles(c))) exit() } |