mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-01-08 23:59:34 +00:00
ar71xx: routerboot: export extended wlan data via sysfs
Export the data to make it accessible from user-space. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 45298
This commit is contained in:
parent
76b5a9aa7d
commit
96b006eb32
@ -11,6 +11,7 @@
|
||||
#define pr_fmt(fmt) "rb: " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/routerboot.h>
|
||||
@ -298,3 +299,60 @@ rb_init_info(void *data, unsigned int size)
|
||||
|
||||
return &rb_info;
|
||||
}
|
||||
|
||||
static char *rb_ext_wlan_data;
|
||||
|
||||
static ssize_t
|
||||
rb_ext_wlan_data_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
if (off + count > attr->size)
|
||||
return -EFBIG;
|
||||
|
||||
memcpy(buf, &rb_ext_wlan_data[off], count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static const struct bin_attribute rb_ext_wlan_data_attr = {
|
||||
.attr = {
|
||||
.name = "ext_wlan_data",
|
||||
.mode = S_IRUSR | S_IWUSR,
|
||||
},
|
||||
.read = rb_ext_wlan_data_read,
|
||||
.size = RB_ART_SIZE,
|
||||
};
|
||||
|
||||
static int __init rb_sysfs_init(void)
|
||||
{
|
||||
struct kobject *rb_kobj;
|
||||
int ret;
|
||||
|
||||
rb_ext_wlan_data = rb_get_ext_wlan_data(1);
|
||||
if (rb_ext_wlan_data == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
rb_kobj = kobject_create_and_add("routerboot", firmware_kobj);
|
||||
if (rb_kobj == NULL) {
|
||||
ret = -ENOMEM;
|
||||
pr_err("unable to create sysfs entry\n");
|
||||
goto err_free_wlan_data;
|
||||
}
|
||||
|
||||
ret = sysfs_create_bin_file(rb_kobj, &rb_ext_wlan_data_attr);
|
||||
if (ret) {
|
||||
pr_err("unable to create sysfs file, %d\n", ret);
|
||||
goto err_put_kobj;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_put_kobj:
|
||||
kobject_put(rb_kobj);
|
||||
err_free_wlan_data:
|
||||
kfree(rb_ext_wlan_data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
late_initcall(rb_sysfs_init);
|
||||
|
Loading…
Reference in New Issue
Block a user