Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=da1a679cde9b12d6e331f43d2d92a234f2d1f9b0
Commit:     da1a679cde9b12d6e331f43d2d92a234f2d1f9b0
Parent:     86ead9caf9a9f265f6065c46080d046230e25d78
Author:     Roland McGrath <[EMAIL PROTECTED]>
AuthorDate: Thu Jul 19 01:48:39 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Thu Jul 19 10:04:47 2007 -0700

    Add /sys/kernel/notes
    
    This patch adds the /sys/kernel/notes magic file.  Reading this delivers the
    contents of the kernel's .notes section.  This lets userland easily glean 
any
    detailed information about the running kernel's build that was stored there 
at
    compile time.
    
    Signed-off-by: Roland McGrath <[EMAIL PROTECTED]>
    Cc: Andi Kleen <[EMAIL PROTECTED]>
    Cc: Paul Mackerras <[EMAIL PROTECTED]>
    Cc: Benjamin Herrenschmidt <[EMAIL PROTECTED]>
    Cc: Richard Henderson <[EMAIL PROTECTED]>
    Cc: Ivan Kokshaysky <[EMAIL PROTECTED]>
    Cc: Martin Schwidefsky <[EMAIL PROTECTED]>
    Cc: Heiko Carstens <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 kernel/ksysfs.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 559deca..2565e1b 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -62,6 +62,28 @@ static ssize_t kexec_crash_loaded_show(struct kset *kset, 
char *page)
 KERNEL_ATTR_RO(kexec_crash_loaded);
 #endif /* CONFIG_KEXEC */
 
+/*
+ * Make /sys/kernel/notes give the raw contents of our kernel .notes section.
+ */
+extern const char __start_notes __attribute__((weak));
+extern const char __stop_notes __attribute__((weak));
+#define        notes_size (&__stop_notes - &__start_notes)
+
+static ssize_t notes_read(struct kobject *kobj, struct bin_attribute *bin_attr,
+                         char *buf, loff_t off, size_t count)
+{
+       memcpy(buf, &__start_notes + off, count);
+       return count;
+}
+
+static struct bin_attribute notes_attr = {
+       .attr = {
+               .name = "notes",
+               .mode = S_IRUGO,
+       },
+       .read = &notes_read,
+};
+
 decl_subsys(kernel, NULL, NULL);
 EXPORT_SYMBOL_GPL(kernel_subsys);
 
@@ -88,6 +110,12 @@ static int __init ksysfs_init(void)
                error = sysfs_create_group(&kernel_subsys.kobj,
                                           &kernel_attr_group);
 
+       if (!error && notes_size > 0) {
+               notes_attr.size = notes_size;
+               error = sysfs_create_bin_file(&kernel_subsys.kobj,
+                                             &notes_attr);
+       }
+
        return error;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to