aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/proc/base.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 01def9f8aa74..a19308604145 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2018,6 +2018,7 @@ struct timers_private {
2018 struct pid *pid; 2018 struct pid *pid;
2019 struct task_struct *task; 2019 struct task_struct *task;
2020 struct sighand_struct *sighand; 2020 struct sighand_struct *sighand;
2021 struct pid_namespace *ns;
2021 unsigned long flags; 2022 unsigned long flags;
2022}; 2023};
2023 2024
@@ -2060,9 +2061,24 @@ static void timers_stop(struct seq_file *m, void *v)
2060static int show_timer(struct seq_file *m, void *v) 2061static int show_timer(struct seq_file *m, void *v)
2061{ 2062{
2062 struct k_itimer *timer; 2063 struct k_itimer *timer;
2064 struct timers_private *tp = m->private;
2065 int notify;
2066 static char *nstr[] = {
2067 [SIGEV_SIGNAL] = "signal",
2068 [SIGEV_NONE] = "none",
2069 [SIGEV_THREAD] = "thread",
2070 };
2063 2071
2064 timer = list_entry((struct list_head *)v, struct k_itimer, list); 2072 timer = list_entry((struct list_head *)v, struct k_itimer, list);
2073 notify = timer->it_sigev_notify;
2074
2065 seq_printf(m, "ID: %d\n", timer->it_id); 2075 seq_printf(m, "ID: %d\n", timer->it_id);
2076 seq_printf(m, "signal: %d/%p\n", timer->sigq->info.si_signo,
2077 timer->sigq->info.si_value.sival_ptr);
2078 seq_printf(m, "notify: %s/%s.%d\n",
2079 nstr[notify & ~SIGEV_THREAD_ID],
2080 (notify & SIGEV_THREAD_ID) ? "tid" : "pid",
2081 pid_nr_ns(timer->it_pid, tp->ns));
2066 2082
2067 return 0; 2083 return 0;
2068} 2084}
@@ -2084,6 +2100,7 @@ static int proc_timers_open(struct inode *inode, struct file *file)
2084 return -ENOMEM; 2100 return -ENOMEM;
2085 2101
2086 tp->pid = proc_pid(inode); 2102 tp->pid = proc_pid(inode);
2103 tp->ns = inode->i_sb->s_fs_info;
2087 return 0; 2104 return 0;
2088} 2105}
2089 2106