--- zzzz-none-000/linux-2.6.28.10/kernel/rcuclassic.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/kernel/rcuclassic.c 2009-12-09 15:55:12.000000000 +0000 @@ -259,7 +259,12 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) { - unsigned long flags; + /*--- unsigned long adr = (unsigned long)func; ---*/ + /*--- unsigned long content = *(unsigned long*)adr; ---*/ + /*--- printk("call_rcu(classic), called by pid=%i, recall_func=0x%lx \n", current->pid, adr); ---*/ + /*--- printk("content: %lx \n", content); ---*/ + + unsigned long flags; head->func = func; local_irq_save(flags); @@ -319,6 +324,7 @@ /* Raises the softirq for processing rcu_callbacks. */ static inline void raise_rcu_softirq(void) { + /*--- printk("[r]"); ---*/ raise_softirq(RCU_SOFTIRQ); } @@ -332,6 +338,8 @@ struct rcu_head *next, *list; int count = 0; + /*--- printk("[db]"); ---*/ + list = rdp->donelist; while (list) { next = list->next; @@ -386,6 +394,8 @@ rcp->cur++; record_gp_stall_check_time(rcp); + + /*--- printk("[sb]"); ---*/ /* * Accessing nohz_cpu_mask before incrementing rcp->cur needs a * Barrier Otherwise it can cause tickless idle CPUs to be @@ -530,10 +540,13 @@ unsigned long flags; long completed_snap; + /*--- printk("[s5]"); ---*/ if (rdp->nxtlist) { local_irq_save(flags); completed_snap = ACCESS_ONCE(rcp->completed); + + /*--- printk("[s5a]"); ---*/ /* * move the other grace-period-completed entries to * [rdp->nxtlist, *rdp->nxttail[0]) temporarily @@ -676,6 +689,7 @@ */ void rcu_check_callbacks(int cpu, int user) { + /*--- printk("[R1]"); ---*/ if (user || (idle_cpu(cpu) && !in_softirq() && hardirq_count() <= (1 << HARDIRQ_SHIFT))) { @@ -732,6 +746,7 @@ static void __cpuinit rcu_online_cpu(int cpu) { + /*--- printk(KERN_ERR "[%s] file=%s line=%d\n", __FUNCTION__, __FILE__, __LINE__); ---*/ struct rcu_data *rdp = &per_cpu(rcu_data, cpu); struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu);