|
@@ -509,6 +509,26 @@ static int proc_pid_limits(struct task_struct *task, char *buffer)
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
|
|
|
+static int proc_pid_syscall(struct task_struct *task, char *buffer)
|
|
|
+{
|
|
|
+ long nr;
|
|
|
+ unsigned long args[6], sp, pc;
|
|
|
+
|
|
|
+ if (task_current_syscall(task, &nr, args, 6, &sp, &pc))
|
|
|
+ return sprintf(buffer, "running\n");
|
|
|
+
|
|
|
+ if (nr < 0)
|
|
|
+ return sprintf(buffer, "%ld 0x%lx 0x%lx\n", nr, sp, pc);
|
|
|
+
|
|
|
+ return sprintf(buffer,
|
|
|
+ "%ld 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n",
|
|
|
+ nr,
|
|
|
+ args[0], args[1], args[2], args[3], args[4], args[5],
|
|
|
+ sp, pc);
|
|
|
+}
|
|
|
+#endif /* CONFIG_HAVE_ARCH_TRACEHOOK */
|
|
|
+
|
|
|
/************************************************************************/
|
|
|
/* Here the fs part begins */
|
|
|
/************************************************************************/
|
|
@@ -2477,6 +2497,9 @@ static const struct pid_entry tgid_base_stuff[] = {
|
|
|
INF("limits", S_IRUSR, pid_limits),
|
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
|
REG("sched", S_IRUGO|S_IWUSR, pid_sched),
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
|
|
|
+ INF("syscall", S_IRUSR, pid_syscall),
|
|
|
#endif
|
|
|
INF("cmdline", S_IRUGO, pid_cmdline),
|
|
|
ONE("stat", S_IRUGO, tgid_stat),
|
|
@@ -2809,6 +2832,9 @@ static const struct pid_entry tid_base_stuff[] = {
|
|
|
INF("limits", S_IRUSR, pid_limits),
|
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
|
REG("sched", S_IRUGO|S_IWUSR, pid_sched),
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
|
|
|
+ INF("syscall", S_IRUSR, pid_syscall),
|
|
|
#endif
|
|
|
INF("cmdline", S_IRUGO, pid_cmdline),
|
|
|
ONE("stat", S_IRUGO, tid_stat),
|