mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-01-10 00:29:26 +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
|
#define pr_fmt(fmt) "rb: " fmt
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/kobject.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/routerboot.h>
|
#include <linux/routerboot.h>
|
||||||
@ -298,3 +299,60 @@ rb_init_info(void *data, unsigned int size)
|
|||||||
|
|
||||||
return &rb_info;
|
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