2005-04-01 22:39:23

by Roland McGrath

[permalink] [raw]
Subject: [PATCH] Show thread_info->flags in /proc/PID/status

It comes up as useful in debugging to be able to see task->thread_info->flags
along with signal information and such. There is no way currently to
elicit these bits from the kernel via sysrq or /proc (AFAIK).
This patch adds the field to /proc/PID/status.


Thanks,
Roland

Signed-off-by: Roland McGrath <[email protected]>


--- linux-2.6/fs/proc/array.c
+++ linux-2.6/fs/proc/array.c
@@ -287,6 +287,12 @@ static inline char *task_cap(struct task
cap_t(p->cap_effective));
}

+static inline char *task_tif(struct task_struct *p, char *buffer)
+{
+ return buffer + sprintf(buffer, "ThreadInfoFlags:\t%lu\n",
+ (unsigned long) p->thread_info->flags);
+}
+
int proc_pid_status(struct task_struct *task, char * buffer)
{
char * orig = buffer;
@@ -294,6 +300,7 @@ int proc_pid_status(struct task_struct *

buffer = task_name(task, buffer);
buffer = task_state(task, buffer);
+ buffer = task_tif(task, buffer);

if (mm) {
buffer = task_mem(mm, buffer);


2005-04-01 22:48:49

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Show thread_info->flags in /proc/PID/status

Roland McGrath <[email protected]> wrote:
>
> It comes up as useful in debugging to be able to see task->thread_info->flags
> along with signal information and such. There is no way currently to
> elicit these bits from the kernel via sysrq or /proc (AFAIK).
> This patch adds the field to /proc/PID/status.
>
> ...
>
> --- linux-2.6/fs/proc/array.c
> +++ linux-2.6/fs/proc/array.c
> @@ -287,6 +287,12 @@ static inline char *task_cap(struct task
> cap_t(p->cap_effective));
> }
>
> +static inline char *task_tif(struct task_struct *p, char *buffer)
> +{
> + return buffer + sprintf(buffer, "ThreadInfoFlags:\t%lu\n",
> + (unsigned long) p->thread_info->flags);
> +}

Alas, thread_info.flags is an arch-specific thing and m68k doesn't
implement it. All other architectures do, though.

Maybe we should show thread_info->flags in the sysrq-t output instead?