]> err.no Git - linux-2.6/blobdiff - fs/proc/array.c
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
[linux-2.6] / fs / proc / array.c
index 37668fe998ad0f28aa5253138ba42351b4bf0d17..7eb1bd7f800c13f74bfc33d6ec862f6fd35f820b 100644 (file)
@@ -74,6 +74,7 @@
 #include <linux/file.h>
 #include <linux/times.h>
 #include <linux/cpuset.h>
+#include <linux/rcupdate.h>
 
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
@@ -159,6 +160,7 @@ static inline char * task_state(struct task_struct *p, char *buffer)
 {
        struct group_info *group_info;
        int g;
+       struct fdtable *fdt = NULL;
 
        read_lock(&tasklist_lock);
        buffer += sprintf(buffer,
@@ -179,10 +181,14 @@ static inline char * task_state(struct task_struct *p, char *buffer)
                p->gid, p->egid, p->sgid, p->fsgid);
        read_unlock(&tasklist_lock);
        task_lock(p);
+       rcu_read_lock();
+       if (p->files)
+               fdt = files_fdtable(p->files);
        buffer += sprintf(buffer,
                "FDSize:\t%d\n"
                "Groups:\t",
-               p->files ? p->files->max_fds : 0);
+               fdt ? fdt->max_fds : 0);
+       rcu_read_unlock();
 
        group_info = p->group_info;
        get_group_info(group_info);
@@ -302,7 +308,7 @@ int proc_pid_status(struct task_struct *task, char * buffer)
        buffer = task_sig(task, buffer);
        buffer = task_cap(task, buffer);
        buffer = cpuset_task_status_allowed(task, buffer);
-#if defined(CONFIG_ARCH_S390)
+#if defined(CONFIG_S390)
        buffer = task_show_regs(task, buffer);
 #endif
        return buffer - orig;
@@ -324,7 +330,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
        unsigned long  min_flt = 0,  maj_flt = 0;
        cputime_t cutime, cstime, utime, stime;
        unsigned long rsslim = 0;
-       unsigned long it_real_value = 0;
+       DEFINE_KTIME(it_real_value);
        struct task_struct *t;
        char tcomm[sizeof(task->comm)];
 
@@ -380,7 +386,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
                        utime = cputime_add(utime, task->signal->utime);
                        stime = cputime_add(stime, task->signal->stime);
                }
-               it_real_value = task->signal->it_real_value;
+               it_real_value = task->signal->real_timer.expires;
        }
        ppid = pid_alive(task) ? task->group_leader->real_parent->tgid : 0;
        read_unlock(&tasklist_lock);
@@ -429,10 +435,10 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
                priority,
                nice,
                num_threads,
-               jiffies_to_clock_t(it_real_value),
+               (long) ktime_to_clock_t(it_real_value),
                start_time,
                vsize,
-               mm ? get_mm_counter(mm, rss) : 0, /* you might want to shift this left 3 */
+               mm ? get_mm_rss(mm) : 0,
                rsslim,
                mm ? mm->start_code : 0,
                mm ? mm->end_code : 0,