Messages in this thread Patch in this message | | | Subject | [patch] Add a sysfs file to determine if a kexec kernel is loaded | From | Jeff Moyer <> | Date | Fri, 19 May 2006 15:27:41 -0400 |
| |
Hi,
This is a repost of a patch I sent back in February. Eric, you indicated that you had no problem with this version. I've verified that it still applies to current kernels.
This patch creates two files in /sys/kernel, kexec_loaded and kexec_crash_loaded. Each file contains a simple boolean value indicating whether the relevant kernel has been loaded into memory. The motivation for this is geared around support.
Comments are welcome, as always.
-Jeff
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
--- linux-2.6.16-rc1-mm1/kernel/kexec.c.orig 2006-02-03 18:13:35.000000000 -0500 +++ linux-2.6.16-rc1-mm1/kernel/kexec.c 2006-02-13 10:13:56.000000000 -0500 @@ -903,7 +903,7 @@ static int kimage_load_segment(struct ki * that to happen you need to do that yourself. */ struct kimage *kexec_image = NULL; -static struct kimage *kexec_crash_image = NULL; +struct kimage *kexec_crash_image = NULL; /* * A home grown binary mutex. * Nothing can wait so this mutex is safe to use --- linux-2.6.16-rc1-mm1/kernel/ksysfs.c.orig 2006-02-10 12:08:52.000000000 -0500 +++ linux-2.6.16-rc1-mm1/kernel/ksysfs.c 2006-02-13 10:15:48.000000000 -0500 @@ -14,6 +14,7 @@ #include <linux/sysfs.h> #include <linux/module.h> #include <linux/init.h> +#include <linux/kexec.h> u64 uevent_seqnum; char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug"; @@ -51,6 +52,20 @@ static ssize_t uevent_helper_store(struc KERNEL_ATTR_RW(uevent_helper); #endif +#ifdef CONFIG_KEXEC +static ssize_t kexec_loaded_show(struct subsystem *subsys, char *page) +{ + return sprintf(page, "%d\n", !!kexec_image); +} +KERNEL_ATTR_RO(kexec_loaded); + +static ssize_t kexec_crash_loaded_show(struct subsystem *subsys, char *page) +{ + return sprintf(page, "%d\n", !!kexec_crash_image); +} +KERNEL_ATTR_RO(kexec_crash_loaded); +#endif /* CONFIG_KEXEC */ + decl_subsys(kernel, NULL, NULL); EXPORT_SYMBOL_GPL(kernel_subsys); @@ -59,6 +74,10 @@ static struct attribute * kernel_attrs[] &uevent_seqnum_attr.attr, &uevent_helper_attr.attr, #endif +#ifdef CONFIG_KEXEC + &kexec_loaded_attr.attr, + &kexec_crash_loaded_attr.attr, +#endif NULL }; --- linux-2.6.16-rc1-mm1/include/linux/kexec.h.orig 2006-02-13 10:11:00.000000000 -0500 +++ linux-2.6.16-rc1-mm1/include/linux/kexec.h 2006-02-13 10:11:09.000000000 -0500 @@ -105,6 +105,7 @@ extern struct page *kimage_alloc_control extern void crash_kexec(struct pt_regs *); int kexec_should_crash(struct task_struct *); extern struct kimage *kexec_image; +extern struct kimage *kexec_crash_image; #define KEXEC_ON_CRASH 0x00000001 #define KEXEC_ARCH_MASK 0xffff0000 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |