Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.26-rc1 /kernel/latencytop.c

Filename:/kernel/latencytop.c
Lines Added:18
Lines Deleted:18
Also changed in: (Previous) 2.6.25-git20  2.6.25-git19  2.6.25-git18  2.6.25-git17  2.6.25-git16  2.6.25-git15 
(Following) 2.6.26-rc2  2.6.26-rc3  2.6.26-rc4  2.6.26-rc5  2.6.26-rc6  2.6.26-rc7 

Location
[  2.6.26-rc1
  [  kernel
     o  latencytop.c

Patch

diff --git a/kernel/latencytop.c b/kernel/latencytop.c
index b4e3c85..5e7b45c 100644
--- a/kernel/latencytop.c
+++ b/kernel/latencytop.c
@@ -64,8 +64,8 @@ account_global_scheduler_latency(struct task_struct *tsk, struct latency_record
       return;
 
    for (i = 0; i < MAXLR; i++) {
-      int q;
-      int same = 1;
+      int q, same = 1;
+
       /* Nothing stored: */
       if (!latency_record[i].backtrace[0]) {
          if (firstnonnull > i)
@@ -73,12 +73,15 @@ account_global_scheduler_latency(struct task_struct *tsk, struct latency_record
          continue;
       }
       for (q = 0 ; q < LT_BACKTRACEDEPTH ; q++) {
-         if (latency_record[i].backtrace[q] !=
-            lat->backtrace[q])
+         unsigned long record = lat->backtrace[q];
+
+         if (latency_record[i].backtrace[q] != record) {
             same = 0;
-         if (same && lat->backtrace[q] == 0)
             break;
-         if (same && lat->backtrace[q] == ULONG_MAX)
+         }
+
+         /* 0 and ULONG_MAX entries mean end of backtrace: */
+         if (record == 0 || record == ULONG_MAX)
             break;
       }
       if (same) {
@@ -143,14 +146,18 @@ account_scheduler_latency(struct task_struct *tsk, int usecs, int inter)
    for (i = 0; i < LT_SAVECOUNT ; i++) {
       struct latency_record *mylat;
       int same = 1;
+
       mylat = &tsk->latency_record[i];
       for (q = 0 ; q < LT_BACKTRACEDEPTH ; q++) {
-         if (mylat->backtrace[q] !=
-            lat.backtrace[q])
+         unsigned long record = lat.backtrace[q];
+
+         if (mylat->backtrace[q] != record) {
             same = 0;
-         if (same && lat.backtrace[q] == 0)
             break;
-         if (same && lat.backtrace[q] == ULONG_MAX)
+         }
+
+         /* 0 and ULONG_MAX entries mean end of backtrace: */
+         if (record == 0 || record == ULONG_MAX)
             break;
       }
       if (same) {
@@ -226,14 +233,7 @@ static struct file_operations lstats_fops = {
 
 static int __init init_lstats_procfs(void)
 {
-   struct proc_dir_entry *pe;
-
-   pe = create_proc_entry("latency_stats", 0644, NULL);
-   if (!pe)
-      return -ENOMEM;
-
-   pe->proc_fops = &lstats_fops;
-
+   proc_create("latency_stats", 0644, NULL, &lstats_fops);
    return 0;
 }
 __initcall(init_lstats_procfs);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.