|
@@ -77,6 +77,7 @@
|
|
|
#include <linux/cpuset.h>
|
|
|
#include <linux/rcupdate.h>
|
|
|
#include <linux/delayacct.h>
|
|
|
+#include <linux/seq_file.h>
|
|
|
#include <linux/pid_namespace.h>
|
|
|
|
|
|
#include <asm/pgtable.h>
|
|
@@ -390,14 +391,14 @@ static cputime_t task_gtime(struct task_struct *p)
|
|
|
return p->gtime;
|
|
|
}
|
|
|
|
|
|
-static int do_task_stat(struct task_struct *task, char *buffer, int whole)
|
|
|
+static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
|
|
|
+ struct pid *pid, struct task_struct *task, int whole)
|
|
|
{
|
|
|
unsigned long vsize, eip, esp, wchan = ~0UL;
|
|
|
long priority, nice;
|
|
|
int tty_pgrp = -1, tty_nr = 0;
|
|
|
sigset_t sigign, sigcatch;
|
|
|
char state;
|
|
|
- int res;
|
|
|
pid_t ppid = 0, pgid = -1, sid = -1;
|
|
|
int num_threads = 0;
|
|
|
struct mm_struct *mm;
|
|
@@ -409,9 +410,6 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
|
|
|
unsigned long rsslim = 0;
|
|
|
char tcomm[sizeof(task->comm)];
|
|
|
unsigned long flags;
|
|
|
- struct pid_namespace *ns;
|
|
|
-
|
|
|
- ns = current->nsproxy->pid_ns;
|
|
|
|
|
|
state = *get_task_state(task);
|
|
|
vsize = eip = esp = 0;
|
|
@@ -498,10 +496,10 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
|
|
|
/* convert nsec -> ticks */
|
|
|
start_time = nsec_to_clock_t(start_time);
|
|
|
|
|
|
- res = sprintf(buffer, "%d (%s) %c %d %d %d %d %d %u %lu \
|
|
|
+ seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu \
|
|
|
%lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \
|
|
|
%lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld\n",
|
|
|
- task_pid_nr_ns(task, ns),
|
|
|
+ pid_nr_ns(pid, ns),
|
|
|
tcomm,
|
|
|
state,
|
|
|
ppid,
|
|
@@ -550,17 +548,19 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
|
|
|
cputime_to_clock_t(cgtime));
|
|
|
if (mm)
|
|
|
mmput(mm);
|
|
|
- return res;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
-int proc_tid_stat(struct task_struct *task, char *buffer)
|
|
|
+int proc_tid_stat(struct seq_file *m, struct pid_namespace *ns,
|
|
|
+ struct pid *pid, struct task_struct *task)
|
|
|
{
|
|
|
- return do_task_stat(task, buffer, 0);
|
|
|
+ return do_task_stat(m, ns, pid, task, 0);
|
|
|
}
|
|
|
|
|
|
-int proc_tgid_stat(struct task_struct *task, char *buffer)
|
|
|
+int proc_tgid_stat(struct seq_file *m, struct pid_namespace *ns,
|
|
|
+ struct pid *pid, struct task_struct *task)
|
|
|
{
|
|
|
- return do_task_stat(task, buffer, 1);
|
|
|
+ return do_task_stat(m, ns, pid, task, 1);
|
|
|
}
|
|
|
|
|
|
int proc_pid_statm(struct task_struct *task, char *buffer)
|