Author: juhosg Date: 2015-04-07 22:03:43 +0200 (Tue, 07 Apr 2015) New Revision: 45298
Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c Log: ar71xx: routerboot: export extended wlan data via sysfs Export the data to make it accessible from user-space. Signed-off-by: Gabor Juhos <[email protected]> Modified: trunk/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c =================================================================== --- trunk/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c 2015-04-07 20:03:35 UTC (rev 45297) +++ trunk/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c 2015-04-07 20:03:43 UTC (rev 45298) @@ -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 @@ 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); _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
