git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
x86: fix pointer type warning in arch/x86/mm/init_64.c:early_memtest
[pandora-kernel.git]
/
kernel
/
ksysfs.c
diff --git
a/kernel/ksysfs.c
b/kernel/ksysfs.c
index
d0e5c48
..
e53bc30
100644
(file)
--- a/
kernel/ksysfs.c
+++ b/
kernel/ksysfs.c
@@
-14,32
+14,37
@@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kexec.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kexec.h>
+#include <linux/sched.h>
#define KERNEL_ATTR_RO(_name) \
#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) \
#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 */
__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 */
}
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;
{
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';
uevent_helper[count] = '\0';
if (count && uevent_helper[count-1] == '\n')
uevent_helper[count-1] = '\0';
@@
-49,17
+54,29
@@
KERNEL_ATTR_RW(uevent_helper);
#endif
#ifdef CONFIG_KEXEC
#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);
}
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);
}
KERNEL_ATTR_RO(kexec_crash_loaded);
+
+static ssize_t vmcoreinfo_show(struct kobject *kobj,
+ struct kobj_attribute *attr, char *buf)
+{
+ return sprintf(buf, "%lx %x\n",
+ paddr_vmcoreinfo_note(),
+ (unsigned int)vmcoreinfo_max_size);
+}
+KERNEL_ATTR_RO(vmcoreinfo);
+
#endif /* CONFIG_KEXEC */
/*
#endif /* CONFIG_KEXEC */
/*
@@
-84,8
+101,8
@@
static struct bin_attribute notes_attr = {
.read = ¬es_read,
};
.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)
static struct attribute * kernel_attrs[] = {
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
@@
-95,6
+112,7
@@
static struct attribute * kernel_attrs[] = {
#ifdef CONFIG_KEXEC
&kexec_loaded_attr.attr,
&kexec_crash_loaded_attr.attr,
#ifdef CONFIG_KEXEC
&kexec_loaded_attr.attr,
&kexec_crash_loaded_attr.attr,
+ &vmcoreinfo_attr.attr,
#endif
NULL
};
#endif
NULL
};
@@
-105,17
+123,39
@@
static struct attribute_group kernel_attr_group = {
static int __init ksysfs_init(void)
{
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;
+
+ 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;
- if (
!error &&
notes_size > 0) {
+ if (notes_size > 0) {
notes_attr.size = notes_size;
notes_attr.size = notes_size;
- error = sysfs_create_bin_file(&kernel_subsys.kobj,
- ¬es_attr);
+ 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;
}
return error;
}