.action_msg = "Resetting",
};
-/* crash sysrq handler */
-static void sysrq_handle_crash(int key, struct pt_regs *pt_regs,
- struct tty_struct *tty) {
- *( (char *) 0) = 0;
-}
-static struct sysrq_key_op sysrq_crash_op = {
- .handler = sysrq_handle_crash,
- .help_msg = "Crash",
- .action_msg = "Crashing the kernel by request",
-};
-
static void sysrq_handle_sync(int key, struct pt_regs *pt_regs,
struct tty_struct *tty)
{
/* END SIGNAL SYSRQ HANDLERS BLOCK */
-static void sysrq_handle_unrt(int key, struct pt_regs *pt_regs,
- struct tty_struct *tty)
-{
- normalize_rt_tasks();
-}
-static struct sysrq_key_op sysrq_unrt_op = {
- .handler = sysrq_handle_unrt,
- .help_msg = "Nice",
- .action_msg = "Nice All RT Tasks"
-};
/* Key Operations table and lock */
static spinlock_t sysrq_key_table_lock = SPIN_LOCK_UNLOCKED;
it is handled specially on the sparc
and will never arrive */
/* b */ &sysrq_reboot_op,
-/* c */ &sysrq_crash_op,
+/* c */ NULL,
/* d */ NULL,
/* e */ &sysrq_term_op,
/* f */ NULL,
#endif
/* l */ NULL,
/* m */ &sysrq_showmem_op,
-/* n */ &sysrq_unrt_op,
+/* n */ NULL,
/* o */ NULL, /* This will often be registered
as 'Off' at init time */
/* p */ &sysrq_showregs_op,
return retval;
}
+/*
+ * table lock and unlocking functions, exposed to modules
+ */
+
+void __sysrq_lock_table (void) { spin_lock(&sysrq_key_table_lock); }
+
+void __sysrq_unlock_table (void) { spin_unlock(&sysrq_key_table_lock); }
+
/*
* get and put functions for the table, exposed to modules.
*/
struct sysrq_key_op *op_p;
int orig_log_level;
int i, j;
- unsigned long flags;
- spin_lock_irqsave(&sysrq_key_table_lock, flags);
+ __sysrq_lock_table();
orig_log_level = console_loglevel;
console_loglevel = 7;
printk(KERN_INFO "SysRq : ");
printk ("\n");
console_loglevel = orig_log_level;
}
- spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
+ __sysrq_unlock_table();
}
/*
__handle_sysrq(key, pt_regs, tty);
}
-int __sysrq_swap_key_ops(int key, struct sysrq_key_op *insert_op_p,
- struct sysrq_key_op *remove_op_p) {
-
- int retval;
- unsigned long flags;
-
- spin_lock_irqsave(&sysrq_key_table_lock, flags);
- if (__sysrq_get_key_op(key) == remove_op_p) {
- __sysrq_put_key_op(key, insert_op_p);
- retval = 0;
- } else {
- retval = -1;
- }
- spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
-
- return retval;
-}
-
-int register_sysrq_key(int key, struct sysrq_key_op *op_p)
-{
- return __sysrq_swap_key_ops(key, op_p, NULL);
-}
-
-int unregister_sysrq_key(int key, struct sysrq_key_op *op_p)
-{
- return __sysrq_swap_key_ops(key, NULL, op_p);
-}
-
EXPORT_SYMBOL(handle_sysrq);
-EXPORT_SYMBOL(register_sysrq_key);
-EXPORT_SYMBOL(unregister_sysrq_key);
+EXPORT_SYMBOL(__sysrq_lock_table);
+EXPORT_SYMBOL(__sysrq_unlock_table);
+EXPORT_SYMBOL(__sysrq_get_key_op);
+EXPORT_SYMBOL(__sysrq_put_key_op);