zoukankan      html  css  js  c++  java
  • [置顶] Linux bus总线

    #include <linux/module.h>

    #include <linux/init.h>

    #include <linux/device.h>

    struct bus_type my_usb_bus = {

        .name = "my_usb",   //总线的名字,注册成功后会在/sys/bus/目录下看到

    };

    #define COUNT_SIZE  100

    char data[COUNT_SIZE] = "Hello MikeChen";

    /*

        内核到用户空间的数据

    */

    static ssize_t show_bus_data(struct bus_type * bus, char *buf)  

    {

        return snprintf(buf, COUNT_SIZE, "show Bus Data: %s\n", data);

    }

    /*

        用户空间到内核的数据

    */

    static ssize_t store_bus_data(struct bus_type * bus, const char *buf, size_t count)

    {

        return snprintf(data, COUNT_SIZE, "Store Bus Data: %s\n", buf);

    }

    /*

        注意该宏最终返回bus_attr_version

        #define BUS_ATTR(_name, _mode, _show, _store) \

        struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)

    */

    static BUS_ATTR(version, S_IRUGO | S_IWUGO, show_bus_data, store_bus_data);

    static int __init my_usb_bus_init(void)

    {

        int ret;

        ret = bus_register(&my_usb_bus);

        if (ret)

        {

            printk("Bus register failed!, ret: %d\n", ret);

            return ret;

        }

        printk("Usb init commplete\n");

        ret = bus_create_file(&my_usb_bus, &bus_attr_version);

        if (ret)

        {

            printk("Bus Create file failed");

            bus_unregister(&my_usb_bus);

            return 0;

        }

        printk("Bus ATTR Create Commplete\n");

        

        return 0;

    }

    static void __exit my_usb_bus_exit(void)

    {

        bus_remove_file(&my_usb_bus, &bus_attr_version)

        bus_unregister(&my_usb_bus);

        printk("Usb Bus exit\n");

    }

    MODULE_LICENSE("GPL");

    MODULE_AUTHOR("MIKE CHEN");

    module_init(my_usb_bus_init);

    module_exit(my_usb_bus_exit);

  • 相关阅读:
    高斯消元(学习笔记)
    离散化(学习笔记)
    并查集(学习笔记)
    模板---负环(学习笔记)
    差分数组 前缀和(学习笔记)
    manacher马拉车算法(学习笔记)
    Java 常用对象-Object类
    Java 值传递和引用传递
    Java 集合-Set接口和三个子类实现
    Java 集合-Arrays工具类的介绍
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3105076.html
Copyright © 2011-2022 走看看