Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24-git3 /kernel/ksysfs.c

Filename:/kernel/ksysfs.c
Lines Added:52
Lines Deleted:30
Also changed in: (Previous) 2.6.24-git2  2.6.24-git1  2.6.24  2.6.24-rc8  2.6.24-rc7  2.6.24-rc6 
(Following) 2.6.24-git4  2.6.24-git5  2.6.24-git6  2.6.24-git7  2.6.24-git8  2.6.24-git9 

Location
[  2.6.24-git3
  [  kernel
     o  ksysfs.c

Patch

diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
index 65daa53..e53bc30 100644
--- a/kernel/ksysfs.c
+++ b/kernel/ksysfs.c
@@ -17,30 +17,34 @@
 #include <linux/sched.h>
 
 #define KERNEL_ATTR_RO(_name) \
-static struct subsys_attribute _name##_attr = __ATTR_RO(_name)
+static struct kobj_attribute _name##_attr = __ATTR_RO(_name)
 
 #define KERNEL_ATTR_RW(_name) \
-static struct subsys_attribute _name##_attr = \
+static struct kobj_attribute _name##_attr = \
    __ATTR(_name, 0644, _name##_show, _name##_store)
 
 #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
 /* current uevent sequence number */
-static ssize_t uevent_seqnum_show(struct kset *kset, char *page)
+static ssize_t uevent_seqnum_show(struct kobject *kobj,
+              struct kobj_attribute *attr, char *buf)
 {
-   return sprintf(page, "%llu\n", (unsigned long long)uevent_seqnum);
+   return sprintf(buf, "%llu\n", (unsigned long long)uevent_seqnum);
 }
 KERNEL_ATTR_RO(uevent_seqnum);
 
 /* uevent helper program, used during early boo */
-static ssize_t uevent_helper_show(struct kset *kset, char *page)
+static ssize_t uevent_helper_show(struct kobject *kobj,
+              struct kobj_attribute *attr, char *buf)
 {
-   return sprintf(page, "%s\n", uevent_helper);
+   return sprintf(buf, "%s\n", uevent_helper);
 }
-static ssize_t uevent_helper_store(struct kset *kset, const char *page, size_t count)
+static ssize_t uevent_helper_store(struct kobject *kobj,
+               struct kobj_attribute *attr,
+               const char *buf, size_t count)
 {
    if (count+1 > UEVENT_HELPER_PATH_LEN)
       return -ENOENT;
-   memcpy(uevent_helper, page, count);
+   memcpy(uevent_helper, buf, count);
    uevent_helper[count] = '\0';
    if (count && uevent_helper[count-1] == '\n')
       uevent_helper[count-1] = '\0';
@@ -50,21 +54,24 @@ KERNEL_ATTR_RW(uevent_helper);
 #endif
 
 #ifdef CONFIG_KEXEC
-static ssize_t kexec_loaded_show(struct kset *kset, char *page)
+static ssize_t kexec_loaded_show(struct kobject *kobj,
+             struct kobj_attribute *attr, char *buf)
 {
-   return sprintf(page, "%d\n", !!kexec_image);
+   return sprintf(buf, "%d\n", !!kexec_image);
 }
 KERNEL_ATTR_RO(kexec_loaded);
 
-static ssize_t kexec_crash_loaded_show(struct kset *kset, char *page)
+static ssize_t kexec_crash_loaded_show(struct kobject *kobj,
+                   struct kobj_attribute *attr, char *buf)
 {
-   return sprintf(page, "%d\n", !!kexec_crash_image);
+   return sprintf(buf, "%d\n", !!kexec_crash_image);
 }
 KERNEL_ATTR_RO(kexec_crash_loaded);
 
-static ssize_t vmcoreinfo_show(struct kset *kset, char *page)
+static ssize_t vmcoreinfo_show(struct kobject *kobj,
+                struct kobj_attribute *attr, char *buf)
 {
-   return sprintf(page, "%lx %x\n",
+   return sprintf(buf, "%lx %x\n",
              paddr_vmcoreinfo_note(),
              (unsigned int)vmcoreinfo_max_size);
 }
@@ -94,8 +101,8 @@ static struct bin_attribute notes_attr = {
    .read = ¬es_read,
 };
 
-decl_subsys(kernel, NULL, NULL);
-EXPORT_SYMBOL_GPL(kernel_subsys);
+struct kobject *kernel_kobj;
+EXPORT_SYMBOL_GPL(kernel_kobj);
 
 static struct attribute * kernel_attrs[] = {
 #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
@@ -116,24 +123,39 @@ static struct attribute_group kernel_attr_group = {
 
 static int __init ksysfs_init(void)
 {
-   int error = subsystem_register(&kernel_subsys);
-   if (!error)
-      error = sysfs_create_group(&kernel_subsys.kobj,
-                  &kernel_attr_group);
+   int error;
 
-   if (!error && notes_size > 0) {
-      notes_attr.size = notes_size;
-      error = sysfs_create_bin_file(&kernel_subsys.kobj,
-                     ¬es_attr);
+   kernel_kobj = kobject_create_and_add("kernel", NULL);
+   if (!kernel_kobj) {
+      error = -ENOMEM;
+      goto exit;
    }
+   error = sysfs_create_group(kernel_kobj, &kernel_attr_group);
+   if (error)
+      goto kset_exit;
 
-   /*
-    * Create "/sys/kernel/uids" directory and corresponding root user's
-    * directory under it.
-    */
-   if (!error)
-      error = uids_kobject_init();
+   if (notes_size > 0) {
+      notes_attr.size = notes_size;
+      error = sysfs_create_bin_file(kernel_kobj, ¬es_attr);
+      if (error)
+         goto group_exit;
+   }
 
+   /* create the /sys/kernel/uids/ directory */
+   error = uids_sysfs_init();
+   if (error)
+      goto notes_exit;
+
+   return 0;
+
+notes_exit:
+   if (notes_size > 0)
+      sysfs_remove_bin_file(kernel_kobj, ¬es_attr);
+group_exit:
+   sysfs_remove_group(kernel_kobj, &kernel_attr_group);
+kset_exit:
+   kobject_put(kernel_kobj);
+exit:
    return error;
 }
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.