extern asmlinkage long sys_open (const char *, int, int) __attribute__((weak));
#endif
extern asmlinkage long sys_ioctl(unsigned int, unsigned int, unsigned long) __attribute__((weak));
+extern rwlock_t tasklist_lock __attribute__((weak));
/* Structures used to control probing. We put all the details of which
struct task_struct *p;
if (&tasklist_lock)
read_lock(&tasklist_lock);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ else
+ rcu_read_lock();
+#endif
+
#ifdef DEFINED_FOR_EACH_PROCESS
for_each_process(p) if (p->pid) {
#ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE
#endif
if (&tasklist_lock)
read_unlock(&tasklist_lock);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ else
+ rcu_read_unlock();
+#endif
}
#endif
if (&tasklist_lock)
read_lock(&tasklist_lock);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ else
+ rcu_read_lock();
+#endif
listener = find_task_by_pid(rxk_ListenerPid);
if (&tasklist_lock)
read_unlock(&tasklist_lock);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ else
+ rcu_read_unlock();
+#endif
while (rxk_ListenerPid) {
flush_signals(listener);
force_sig(SIGKILL, listener);