#include #include #include #include #include #include #include #include #include #include "mod.h" #include "dev.h" #include "debug.h" static ssize_t test_request_show(struct device *dev, struct device_attribute *attr, char *buf) { test_dev_t *test = dev_get_drvdata(dev); return sprintf(buf, "%lx\n", test->addr); } static ssize_t test_request_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { unsigned long ua; test_dev_t *test = dev_get_drvdata(dev); if (sscanf(buf, "%lx", &ua) != 1) { mod_info("Error processing request\n"); return 0; } test->addr = pcidriver_resolve_bar(ua); return count; } static DEVICE_ATTR(test_request, 0664, test_request_show, test_request_store); int test_sysfs_init(test_dev_t *dev) { int err; err = device_create_file(dev->dev, &dev_attr_test_request); return err; } void test_sysfs_free(test_dev_t *dev) { device_remove_file(dev->dev, &dev_attr_test_request); }