[Crash-utility] [PATCH] runqueue struct is changed to 'rq'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



'struct runqueue' is changed to 'rq' in 2.6.18-rc1 and it causes failure when invoking the crash tool - noticed on powerpc, but should see even on other archs. The attached patch has been created against the latest crach sources (crash-4.0-2.33).

Thanks
Haren

--- crash-4.0-2.33/kernel.c.orig	2006-07-18 19:09:29.000000000 -0700
+++ crash-4.0-2.33/kernel.c	2006-07-19 17:53:39.000000000 -0700
@@ -54,6 +54,7 @@ kernel_init(int when)
 	int i;
 	char *p1, *p2, buf[BUFSIZE];
 	struct syment *sp1, *sp2;
+	char *rqstruct;
 
 	if (pc->flags & KERNEL_DEBUG_QUERY)
 		return;
@@ -157,7 +158,15 @@ kernel_init(int when)
 				&kt->__per_cpu_offset[0]); 
 			kt->flags |= PER_CPU_OFF;
 		}
-		MEMBER_OFFSET_INIT(runqueue_cpu, "runqueue", "cpu");
+		if (STRUCT_EXISTS("runqueue"))
+			rqstruct = "runqueue";
+		else if (STRUCT_EXISTS("rq"))
+			rqstruct = "rq";
+
+		MEMBER_OFFSET_INIT(runqueue_cpu, rqstruct, "cpu");
+		/*
+		 * 'cpu' does not exist in 'struct rq'.
+		 */
 		if (VALID_MEMBER(runqueue_cpu) &&
 		    (get_array_length("runqueue.cpu", NULL, 0) > 0)) {
 			MEMBER_OFFSET_INIT(cpu_s_curr, "cpu_s", "curr");
@@ -182,17 +191,17 @@ kernel_init(int when)
 	     "runq_siblings: %d: __cpu_idx and __rq_idx arrays don't exist?\n",
 					kt->runq_siblings);
 		} else {
-			MEMBER_OFFSET_INIT(runqueue_idle, "runqueue", "idle");
-			MEMBER_OFFSET_INIT(runqueue_curr, "runqueue", "curr");
+			MEMBER_OFFSET_INIT(runqueue_idle, rqstruct, "idle");
+			MEMBER_OFFSET_INIT(runqueue_curr, rqstruct, "curr");
 			ASSIGN_OFFSET(runqueue_cpu) = INVALID_OFFSET;
 		}
-		MEMBER_OFFSET_INIT(runqueue_active, "runqueue", "active");
-		MEMBER_OFFSET_INIT(runqueue_expired, "runqueue", "expired");
-		MEMBER_OFFSET_INIT(runqueue_arrays, "runqueue", "arrays");
+		MEMBER_OFFSET_INIT(runqueue_active, rqstruct, "active");
+		MEMBER_OFFSET_INIT(runqueue_expired, rqstruct, "expired");
+		MEMBER_OFFSET_INIT(runqueue_arrays, rqstruct, "arrays");
 		MEMBER_OFFSET_INIT(prio_array_queue, "prio_array", "queue");
                 MEMBER_OFFSET_INIT(prio_array_nr_active, "prio_array",
                         "nr_active");
-		STRUCT_SIZE_INIT(runqueue, "runqueue"); 
+		STRUCT_SIZE_INIT(runqueue, rqstruct); 
 		STRUCT_SIZE_INIT(prio_array, "prio_array"); 
 
                /*

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux