patch-2.4.21 linux-2.4.21/fs/proc/proc_misc.c
Next file: linux-2.4.21/fs/read_write.c
Previous file: linux-2.4.21/fs/proc/inode.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/fs/proc/proc_misc.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.20/fs/proc/proc_misc.c linux-2.4.21/fs/proc/proc_misc.c
@@ -36,6 +36,7 @@
#include <linux/init.h>
#include <linux/smp_lock.h>
#include <linux/seq_file.h>
+#include <linux/sysrq.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
@@ -344,7 +345,7 @@
kstat.pswpout,
sum
);
-#if !defined(CONFIG_ARCH_S390)
+#if !defined(CONFIG_ARCH_S390) && !defined(CONFIG_ALPHA)
for (i = 0 ; i < NR_IRQS ; i++)
proc_sprintf(page, &off, &len,
" %u", kstat_irqs(i));
@@ -532,6 +533,28 @@
write: write_profile,
};
+#ifdef CONFIG_MAGIC_SYSRQ
+/*
+ * writing 'C' to /proc/sysrq-trigger is like sysrq-C
+ */
+static ssize_t write_sysrq_trigger(struct file *file, const char *buf,
+ size_t count, loff_t *ppos)
+{
+ if (count) {
+ char c;
+
+ if (get_user(c, buf))
+ return -EFAULT;
+ handle_sysrq(c, NULL, NULL, NULL);
+ }
+ return count;
+}
+
+static struct file_operations proc_sysrq_trigger_operations = {
+ .write = write_sysrq_trigger,
+};
+#endif
+
struct proc_dir_entry *proc_root_kcore;
static void create_seq_entry(char *name, mode_t mode, struct file_operations *f)
@@ -608,6 +631,11 @@
entry->size = (1+prof_len) * sizeof(unsigned int);
}
}
+#ifdef CONFIG_MAGIC_SYSRQ
+ entry = create_proc_entry("sysrq-trigger", S_IWUSR, NULL);
+ if (entry)
+ entry->proc_fops = &proc_sysrq_trigger_operations;
+#endif
#ifdef CONFIG_PPC32
{
extern struct file_operations ppc_htab_operations;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)