*** ./kernel/exit.c.orig Sat Aug 24 12:08:59 2002 --- ./kernel/exit.c Sat Aug 24 12:21:05 2002 *************** *** 24,29 **** --- 24,31 ---- extern void sem_exit (void); extern struct task_struct *child_reaper; + int sysctl_warn_preempt = 1; /* Warn about preempted tasks still holding locks */ + int getrusage(struct task_struct *, int, struct rusage *); static void release_task(struct task_struct * p) *************** *** 496,502 **** tsk->flags |= PF_EXITING; del_timer_sync(&tsk->real_timer); ! if (unlikely(preempt_get_count())) printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", current->comm, current->pid, preempt_get_count()); --- 498,504 ---- tsk->flags |= PF_EXITING; del_timer_sync(&tsk->real_timer); ! if (sysctl_warn_preempt && unlikely(preempt_get_count())) printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", current->comm, current->pid, preempt_get_count()); *** ./kernel/sysctl.c.orig Sat Aug 24 12:07:26 2002 --- ./kernel/sysctl.c Sat Aug 24 12:22:03 2002 *************** *** 74,79 **** --- 74,81 ---- extern int sem_ctls[]; #endif + extern int sysctl_warn_preempt; + #ifdef __sparc__ extern char reboot_command []; extern int stop_a_enabled; *************** *** 260,265 **** --- 262,269 ---- {KERN_LOWLATENCY, "lowlatency", &enable_lowlatency, sizeof (int), 0644, NULL, &proc_dointvec}, #endif + {KERN_PREEMPTWARN, "preemptwarnings", &sysctl_warn_preempt, sizeof (int), + 0644, NULL, &proc_dointvec}, {0} }; *** ./include/linux/sysctl.h.orig Sat Aug 24 12:06:09 2002 --- ./include/linux/sysctl.h Sat Aug 24 12:07:07 2002 *************** *** 125,130 **** --- 125,131 ---- KERN_TAINTED=53, /* int: various kernel tainted flags */ KERN_CADPID=54, /* int: PID of the process to notify on CAD */ KERN_LOWLATENCY=55, /* int: enable low latency scheduling */ + KERN_PREEMPTWARN=56, /* int: enable warnings about preempted processes */ };