]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - kernel/sched_stats.h
iwlwifi: 3945 unfold iwl-3945-commands.h
[mv-sheeva.git] / kernel / sched_stats.h
index 3b01098164c8963b47ad04d27f68eb7b711a37dc..8ab0cef8ecab44ab0751a30f33b08636a9edd30f 100644 (file)
@@ -42,7 +42,8 @@ static int show_schedstat(struct seq_file *seq, void *v)
                for_each_domain(cpu, sd) {
                        enum cpu_idle_type itype;
 
-                       cpumask_scnprintf(mask_str, mask_len, sd->span);
+                       cpumask_scnprintf(mask_str, mask_len,
+                                         sched_domain_span(sd));
                        seq_printf(seq, "domain%d %s", dcount++, mask_str);
                        for (itype = CPU_IDLE; itype < CPU_MAX_IDLE_TYPES;
                                        itype++) {
@@ -295,6 +296,7 @@ sched_info_switch(struct task_struct *prev, struct task_struct *next)
 static inline void account_group_user_time(struct task_struct *tsk,
                                           cputime_t cputime)
 {
+       struct task_cputime *times;
        struct signal_struct *sig;
 
        /* tsk == current, ensure it is safe to use ->signal */
@@ -302,13 +304,11 @@ static inline void account_group_user_time(struct task_struct *tsk,
                return;
 
        sig = tsk->signal;
-       if (sig->cputime.totals) {
-               struct task_cputime *times;
+       times = &sig->cputime.totals;
 
-               times = per_cpu_ptr(sig->cputime.totals, get_cpu());
-               times->utime = cputime_add(times->utime, cputime);
-               put_cpu_no_resched();
-       }
+       spin_lock(&times->lock);
+       times->utime = cputime_add(times->utime, cputime);
+       spin_unlock(&times->lock);
 }
 
 /**
@@ -324,6 +324,7 @@ static inline void account_group_user_time(struct task_struct *tsk,
 static inline void account_group_system_time(struct task_struct *tsk,
                                             cputime_t cputime)
 {
+       struct task_cputime *times;
        struct signal_struct *sig;
 
        /* tsk == current, ensure it is safe to use ->signal */
@@ -331,13 +332,11 @@ static inline void account_group_system_time(struct task_struct *tsk,
                return;
 
        sig = tsk->signal;
-       if (sig->cputime.totals) {
-               struct task_cputime *times;
+       times = &sig->cputime.totals;
 
-               times = per_cpu_ptr(sig->cputime.totals, get_cpu());
-               times->stime = cputime_add(times->stime, cputime);
-               put_cpu_no_resched();
-       }
+       spin_lock(&times->lock);
+       times->stime = cputime_add(times->stime, cputime);
+       spin_unlock(&times->lock);
 }
 
 /**
@@ -353,6 +352,7 @@ static inline void account_group_system_time(struct task_struct *tsk,
 static inline void account_group_exec_runtime(struct task_struct *tsk,
                                              unsigned long long ns)
 {
+       struct task_cputime *times;
        struct signal_struct *sig;
 
        sig = tsk->signal;
@@ -361,11 +361,9 @@ static inline void account_group_exec_runtime(struct task_struct *tsk,
        if (unlikely(!sig))
                return;
 
-       if (sig->cputime.totals) {
-               struct task_cputime *times;
+       times = &sig->cputime.totals;
 
-               times = per_cpu_ptr(sig->cputime.totals, get_cpu());
-               times->sum_exec_runtime += ns;
-               put_cpu_no_resched();
-       }
+       spin_lock(&times->lock);
+       times->sum_exec_runtime += ns;
+       spin_unlock(&times->lock);
 }