|
@@ -186,51 +186,45 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
|
|
|
task_unlock(p);
|
|
|
rcu_read_unlock();
|
|
|
|
|
|
- seq_printf(m,
|
|
|
- "State:\t%s\n"
|
|
|
- "Tgid:\t%d\n"
|
|
|
- "Ngid:\t%d\n"
|
|
|
- "Pid:\t%d\n"
|
|
|
- "PPid:\t%d\n"
|
|
|
- "TracerPid:\t%d\n"
|
|
|
- "Uid:\t%d\t%d\t%d\t%d\n"
|
|
|
- "Gid:\t%d\t%d\t%d\t%d\n"
|
|
|
- "FDSize:\t%d\nGroups:\t",
|
|
|
- get_task_state(p),
|
|
|
- tgid, ngid, pid_nr_ns(pid, ns), ppid, tpid,
|
|
|
- from_kuid_munged(user_ns, cred->uid),
|
|
|
- from_kuid_munged(user_ns, cred->euid),
|
|
|
- from_kuid_munged(user_ns, cred->suid),
|
|
|
- from_kuid_munged(user_ns, cred->fsuid),
|
|
|
- from_kgid_munged(user_ns, cred->gid),
|
|
|
- from_kgid_munged(user_ns, cred->egid),
|
|
|
- from_kgid_munged(user_ns, cred->sgid),
|
|
|
- from_kgid_munged(user_ns, cred->fsgid),
|
|
|
- max_fds);
|
|
|
-
|
|
|
+ seq_printf(m, "State:\t%s", get_task_state(p));
|
|
|
+
|
|
|
+ seq_put_decimal_ull(m, "\nTgid:\t", tgid);
|
|
|
+ seq_put_decimal_ull(m, "\nNgid:\t", ngid);
|
|
|
+ seq_put_decimal_ull(m, "\nPid:\t", pid_nr_ns(pid, ns));
|
|
|
+ seq_put_decimal_ull(m, "\nPPid:\t", ppid);
|
|
|
+ seq_put_decimal_ull(m, "\nTracerPid:\t", tpid);
|
|
|
+ seq_put_decimal_ull(m, "\nUid:\t", from_kuid_munged(user_ns, cred->uid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->euid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->suid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kuid_munged(user_ns, cred->fsuid));
|
|
|
+ seq_put_decimal_ull(m, "\nGid:\t", from_kgid_munged(user_ns, cred->gid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->egid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->sgid));
|
|
|
+ seq_put_decimal_ull(m, "\t", from_kgid_munged(user_ns, cred->fsgid));
|
|
|
+ seq_put_decimal_ull(m, "\nFDSize:\t", max_fds);
|
|
|
+
|
|
|
+ seq_puts(m, "\nGroups:\t");
|
|
|
group_info = cred->group_info;
|
|
|
for (g = 0; g < group_info->ngroups; g++)
|
|
|
- seq_printf(m, "%d ",
|
|
|
- from_kgid_munged(user_ns, GROUP_AT(group_info, g)));
|
|
|
+ seq_put_decimal_ull(m, g ? " " : "",
|
|
|
+ from_kgid_munged(user_ns, group_info->gid[g]));
|
|
|
put_cred(cred);
|
|
|
+ /* Trailing space shouldn't have been added in the first place. */
|
|
|
+ seq_putc(m, ' ');
|
|
|
|
|
|
#ifdef CONFIG_PID_NS
|
|
|
seq_puts(m, "\nNStgid:");
|
|
|
for (g = ns->level; g <= pid->level; g++)
|
|
|
- seq_printf(m, "\t%d",
|
|
|
- task_tgid_nr_ns(p, pid->numbers[g].ns));
|
|
|
+ seq_put_decimal_ull(m, "\t", task_tgid_nr_ns(p, pid->numbers[g].ns));
|
|
|
seq_puts(m, "\nNSpid:");
|
|
|
for (g = ns->level; g <= pid->level; g++)
|
|
|
- seq_printf(m, "\t%d",
|
|
|
- task_pid_nr_ns(p, pid->numbers[g].ns));
|
|
|
+ seq_put_decimal_ull(m, "\t", task_pid_nr_ns(p, pid->numbers[g].ns));
|
|
|
seq_puts(m, "\nNSpgid:");
|
|
|
for (g = ns->level; g <= pid->level; g++)
|
|
|
- seq_printf(m, "\t%d",
|
|
|
- task_pgrp_nr_ns(p, pid->numbers[g].ns));
|
|
|
+ seq_put_decimal_ull(m, "\t", task_pgrp_nr_ns(p, pid->numbers[g].ns));
|
|
|
seq_puts(m, "\nNSsid:");
|
|
|
for (g = ns->level; g <= pid->level; g++)
|
|
|
- seq_printf(m, "\t%d",
|
|
|
- task_session_nr_ns(p, pid->numbers[g].ns));
|
|
|
+ seq_put_decimal_ull(m, "\t", task_session_nr_ns(p, pid->numbers[g].ns));
|
|
|
#endif
|
|
|
seq_putc(m, '\n');
|
|
|
}
|
|
@@ -299,11 +293,12 @@ static inline void task_sig(struct seq_file *m, struct task_struct *p)
|
|
|
unlock_task_sighand(p, &flags);
|
|
|
}
|
|
|
|
|
|
- seq_printf(m, "Threads:\t%d\n", num_threads);
|
|
|
- seq_printf(m, "SigQ:\t%lu/%lu\n", qsize, qlim);
|
|
|
+ seq_put_decimal_ull(m, "Threads:\t", num_threads);
|
|
|
+ seq_put_decimal_ull(m, "\nSigQ:\t", qsize);
|
|
|
+ seq_put_decimal_ull(m, "/", qlim);
|
|
|
|
|
|
/* render them all */
|
|
|
- render_sigset_t(m, "SigPnd:\t", &pending);
|
|
|
+ render_sigset_t(m, "\nSigPnd:\t", &pending);
|
|
|
render_sigset_t(m, "ShdPnd:\t", &shpending);
|
|
|
render_sigset_t(m, "SigBlk:\t", &blocked);
|
|
|
render_sigset_t(m, "SigIgn:\t", &ignored);
|
|
@@ -348,17 +343,17 @@ static inline void task_cap(struct seq_file *m, struct task_struct *p)
|
|
|
static inline void task_seccomp(struct seq_file *m, struct task_struct *p)
|
|
|
{
|
|
|
#ifdef CONFIG_SECCOMP
|
|
|
- seq_printf(m, "Seccomp:\t%d\n", p->seccomp.mode);
|
|
|
+ seq_put_decimal_ull(m, "Seccomp:\t", p->seccomp.mode);
|
|
|
+ seq_putc(m, '\n');
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
static inline void task_context_switch_counts(struct seq_file *m,
|
|
|
struct task_struct *p)
|
|
|
{
|
|
|
- seq_printf(m, "voluntary_ctxt_switches:\t%lu\n"
|
|
|
- "nonvoluntary_ctxt_switches:\t%lu\n",
|
|
|
- p->nvcsw,
|
|
|
- p->nivcsw);
|
|
|
+ seq_put_decimal_ull(m, "voluntary_ctxt_switches:\t", p->nvcsw);
|
|
|
+ seq_put_decimal_ull(m, "\nnonvoluntary_ctxt_switches:\t", p->nivcsw);
|
|
|
+ seq_putc(m, '\n');
|
|
|
}
|
|
|
|
|
|
static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
|
|
@@ -490,41 +485,41 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
|
|
|
start_time = nsec_to_clock_t(task->real_start_time);
|
|
|
|
|
|
seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
|
|
|
- seq_put_decimal_ll(m, ' ', ppid);
|
|
|
- seq_put_decimal_ll(m, ' ', pgid);
|
|
|
- seq_put_decimal_ll(m, ' ', sid);
|
|
|
- seq_put_decimal_ll(m, ' ', tty_nr);
|
|
|
- seq_put_decimal_ll(m, ' ', tty_pgrp);
|
|
|
- seq_put_decimal_ull(m, ' ', task->flags);
|
|
|
- seq_put_decimal_ull(m, ' ', min_flt);
|
|
|
- seq_put_decimal_ull(m, ' ', cmin_flt);
|
|
|
- seq_put_decimal_ull(m, ' ', maj_flt);
|
|
|
- seq_put_decimal_ull(m, ' ', cmaj_flt);
|
|
|
- seq_put_decimal_ull(m, ' ', cputime_to_clock_t(utime));
|
|
|
- seq_put_decimal_ull(m, ' ', cputime_to_clock_t(stime));
|
|
|
- seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cutime));
|
|
|
- seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cstime));
|
|
|
- seq_put_decimal_ll(m, ' ', priority);
|
|
|
- seq_put_decimal_ll(m, ' ', nice);
|
|
|
- seq_put_decimal_ll(m, ' ', num_threads);
|
|
|
- seq_put_decimal_ull(m, ' ', 0);
|
|
|
- seq_put_decimal_ull(m, ' ', start_time);
|
|
|
- seq_put_decimal_ull(m, ' ', vsize);
|
|
|
- seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
|
|
|
- seq_put_decimal_ull(m, ' ', rsslim);
|
|
|
- seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->start_code : 1) : 0);
|
|
|
- seq_put_decimal_ull(m, ' ', mm ? (permitted ? mm->end_code : 1) : 0);
|
|
|
- seq_put_decimal_ull(m, ' ', (permitted && mm) ? mm->start_stack : 0);
|
|
|
- seq_put_decimal_ull(m, ' ', esp);
|
|
|
- seq_put_decimal_ull(m, ' ', eip);
|
|
|
+ seq_put_decimal_ll(m, " ", ppid);
|
|
|
+ seq_put_decimal_ll(m, " ", pgid);
|
|
|
+ seq_put_decimal_ll(m, " ", sid);
|
|
|
+ seq_put_decimal_ll(m, " ", tty_nr);
|
|
|
+ seq_put_decimal_ll(m, " ", tty_pgrp);
|
|
|
+ seq_put_decimal_ull(m, " ", task->flags);
|
|
|
+ seq_put_decimal_ull(m, " ", min_flt);
|
|
|
+ seq_put_decimal_ull(m, " ", cmin_flt);
|
|
|
+ seq_put_decimal_ull(m, " ", maj_flt);
|
|
|
+ seq_put_decimal_ull(m, " ", cmaj_flt);
|
|
|
+ seq_put_decimal_ull(m, " ", cputime_to_clock_t(utime));
|
|
|
+ seq_put_decimal_ull(m, " ", cputime_to_clock_t(stime));
|
|
|
+ seq_put_decimal_ll(m, " ", cputime_to_clock_t(cutime));
|
|
|
+ seq_put_decimal_ll(m, " ", cputime_to_clock_t(cstime));
|
|
|
+ seq_put_decimal_ll(m, " ", priority);
|
|
|
+ seq_put_decimal_ll(m, " ", nice);
|
|
|
+ seq_put_decimal_ll(m, " ", num_threads);
|
|
|
+ seq_put_decimal_ull(m, " ", 0);
|
|
|
+ seq_put_decimal_ull(m, " ", start_time);
|
|
|
+ seq_put_decimal_ull(m, " ", vsize);
|
|
|
+ seq_put_decimal_ull(m, " ", mm ? get_mm_rss(mm) : 0);
|
|
|
+ seq_put_decimal_ull(m, " ", rsslim);
|
|
|
+ seq_put_decimal_ull(m, " ", mm ? (permitted ? mm->start_code : 1) : 0);
|
|
|
+ seq_put_decimal_ull(m, " ", mm ? (permitted ? mm->end_code : 1) : 0);
|
|
|
+ seq_put_decimal_ull(m, " ", (permitted && mm) ? mm->start_stack : 0);
|
|
|
+ seq_put_decimal_ull(m, " ", esp);
|
|
|
+ seq_put_decimal_ull(m, " ", eip);
|
|
|
/* The signal information here is obsolete.
|
|
|
* It must be decimal for Linux 2.0 compatibility.
|
|
|
* Use /proc/#/status for real-time signals.
|
|
|
*/
|
|
|
- seq_put_decimal_ull(m, ' ', task->pending.signal.sig[0] & 0x7fffffffUL);
|
|
|
- seq_put_decimal_ull(m, ' ', task->blocked.sig[0] & 0x7fffffffUL);
|
|
|
- seq_put_decimal_ull(m, ' ', sigign.sig[0] & 0x7fffffffUL);
|
|
|
- seq_put_decimal_ull(m, ' ', sigcatch.sig[0] & 0x7fffffffUL);
|
|
|
+ seq_put_decimal_ull(m, " ", task->pending.signal.sig[0] & 0x7fffffffUL);
|
|
|
+ seq_put_decimal_ull(m, " ", task->blocked.sig[0] & 0x7fffffffUL);
|
|
|
+ seq_put_decimal_ull(m, " ", sigign.sig[0] & 0x7fffffffUL);
|
|
|
+ seq_put_decimal_ull(m, " ", sigcatch.sig[0] & 0x7fffffffUL);
|
|
|
|
|
|
/*
|
|
|
* We used to output the absolute kernel address, but that's an
|
|
@@ -538,31 +533,31 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
|
|
|
else
|
|
|
seq_puts(m, " 0");
|
|
|
|
|
|
- seq_put_decimal_ull(m, ' ', 0);
|
|
|
- seq_put_decimal_ull(m, ' ', 0);
|
|
|
- seq_put_decimal_ll(m, ' ', task->exit_signal);
|
|
|
- seq_put_decimal_ll(m, ' ', task_cpu(task));
|
|
|
- seq_put_decimal_ull(m, ' ', task->rt_priority);
|
|
|
- seq_put_decimal_ull(m, ' ', task->policy);
|
|
|
- seq_put_decimal_ull(m, ' ', delayacct_blkio_ticks(task));
|
|
|
- seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
|
|
|
- seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
|
|
|
+ seq_put_decimal_ull(m, " ", 0);
|
|
|
+ seq_put_decimal_ull(m, " ", 0);
|
|
|
+ seq_put_decimal_ll(m, " ", task->exit_signal);
|
|
|
+ seq_put_decimal_ll(m, " ", task_cpu(task));
|
|
|
+ seq_put_decimal_ull(m, " ", task->rt_priority);
|
|
|
+ seq_put_decimal_ull(m, " ", task->policy);
|
|
|
+ seq_put_decimal_ull(m, " ", delayacct_blkio_ticks(task));
|
|
|
+ seq_put_decimal_ull(m, " ", cputime_to_clock_t(gtime));
|
|
|
+ seq_put_decimal_ll(m, " ", cputime_to_clock_t(cgtime));
|
|
|
|
|
|
if (mm && permitted) {
|
|
|
- seq_put_decimal_ull(m, ' ', mm->start_data);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->end_data);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->start_brk);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->arg_start);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->arg_end);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->env_start);
|
|
|
- seq_put_decimal_ull(m, ' ', mm->env_end);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->start_data);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->end_data);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->start_brk);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->arg_start);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->arg_end);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->env_start);
|
|
|
+ seq_put_decimal_ull(m, " ", mm->env_end);
|
|
|
} else
|
|
|
- seq_printf(m, " 0 0 0 0 0 0 0");
|
|
|
+ seq_puts(m, " 0 0 0 0 0 0 0");
|
|
|
|
|
|
if (permitted)
|
|
|
- seq_put_decimal_ll(m, ' ', task->exit_code);
|
|
|
+ seq_put_decimal_ll(m, " ", task->exit_code);
|
|
|
else
|
|
|
- seq_put_decimal_ll(m, ' ', 0);
|
|
|
+ seq_puts(m, " 0");
|
|
|
|
|
|
seq_putc(m, '\n');
|
|
|
if (mm)
|
|
@@ -598,13 +593,13 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
|
|
|
* seq_printf(m, "%lu %lu %lu %lu 0 %lu 0\n",
|
|
|
* size, resident, shared, text, data);
|
|
|
*/
|
|
|
- seq_put_decimal_ull(m, 0, size);
|
|
|
- seq_put_decimal_ull(m, ' ', resident);
|
|
|
- seq_put_decimal_ull(m, ' ', shared);
|
|
|
- seq_put_decimal_ull(m, ' ', text);
|
|
|
- seq_put_decimal_ull(m, ' ', 0);
|
|
|
- seq_put_decimal_ull(m, ' ', data);
|
|
|
- seq_put_decimal_ull(m, ' ', 0);
|
|
|
+ seq_put_decimal_ull(m, "", size);
|
|
|
+ seq_put_decimal_ull(m, " ", resident);
|
|
|
+ seq_put_decimal_ull(m, " ", shared);
|
|
|
+ seq_put_decimal_ull(m, " ", text);
|
|
|
+ seq_put_decimal_ull(m, " ", 0);
|
|
|
+ seq_put_decimal_ull(m, " ", data);
|
|
|
+ seq_put_decimal_ull(m, " ", 0);
|
|
|
seq_putc(m, '\n');
|
|
|
|
|
|
return 0;
|