linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / proc / array.c
index 9b31fb4..8434cba 100644 (file)
@@ -52,6 +52,7 @@
  *                      :  base.c too.
  */
 
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/time.h>
@@ -74,9 +75,9 @@
 #include <linux/times.h>
 #include <linux/cpuset.h>
 #include <linux/rcupdate.h>
-#include <linux/delayacct.h>
 #include <linux/vs_context.h>
 #include <linux/vs_network.h>
+#include <linux/vs_cvirt.h>
 
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
@@ -385,6 +386,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;
+       DEFINE_KTIME(it_real_value);
        struct task_struct *t;
        char tcomm[sizeof(task->comm)];
 
@@ -402,8 +404,6 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
        sigemptyset(&sigign);
        sigemptyset(&sigcatch);
        cutime = cstime = utime = stime = cputime_zero;
-
-       mutex_lock(&tty_mutex);
        read_lock(&tasklist_lock);
        if (task->sighand) {
                spin_lock_irq(&task->sighand->siglock);
@@ -442,6 +442,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->real_timer.expires;
        }
        pid = vx_info_map_pid(task->vx_info, pid_alive(task) ? task->pid : 0);
        ppid = (!(pid > 1)) ? 0 : vx_info_map_tgid(task->vx_info,
@@ -449,14 +450,9 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
        pgid = vx_info_map_pid(task->vx_info, pgid);
 
        read_unlock(&tasklist_lock);
-       mutex_unlock(&tty_mutex);
 
-       if (!whole || num_threads<2) {
-               wchan = 0;
-               if (current->uid == task->uid || current->euid == task->uid ||
-                               capable(CAP_SYS_NICE))
-                       wchan = get_wchan(task);
-       }
+       if (!whole || num_threads<2)
+               wchan = get_wchan(task);
        if (!whole) {
                min_flt = task->min_flt;
                maj_flt = task->maj_flt;
@@ -488,8 +484,8 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
        }
 
        res = sprintf(buffer,"%d (%s) %c %d %d %d %d %d %lu %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 %lu %lu %llu\n",
+%lu %lu %lu %lu %lu %ld %ld %ld %ld %d %ld %llu %lu %ld %lu %lu %lu %lu %lu \
+%lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu\n",
                pid,
                tcomm,
                state,
@@ -510,6 +506,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
                priority,
                nice,
                num_threads,
+               (long) ktime_to_clock_t(it_real_value),
                start_time,
                vsize,
                mm ? get_mm_rss(mm) : 0,
@@ -533,8 +530,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
                task->exit_signal,
                task_cpu(task),
                task->rt_priority,
-               task->policy,
-               (unsigned long long)delayacct_blkio_ticks(task));
+               task->policy);
        if(mm)
                mmput(mm);
        return res;