按照国嵌的代码(LDD那本书上的代码也一样):
struct device my_bus = {
.bus_id = "my_bus0",
.release = my_bus_release,
};
static int my_match(struct device *dev, struct device_driver *driver)
{
return !strncmp(dev->bus_id, driver->name, strlen(driver->name));
}
编译时,提示 struct device 中没有bus_id 这样的错误。打开/lib/modules/2.6.35-28-generic/build/include/linux/device.h
找到struct device 的定义,里面没有bus_id,但有:
const char *init_name; /* initial name of the device */ 这句。
可见,要把上面结构中的.bus_id = "my_bus0", 改为 .init_name = "my_bus0",
同时上网搜到,return !strncmp(dev->bus_id, driver->name, strlen(driver->name));这句也要改成:
return !strncmp(dev_name(dev), driver->name, strlen(driver->name));
这样编译即可成功!
另注:
如果要设置设备的名字,也不再使用strncpy(my_dev.bus_id, "my_dev", BUS_ID_SIZE); 而改用:
dev_set_name(&dev, "name");
相关推荐
linux2.6.28 usbcamera 调试 学习 实验 练习
我想这款linux-2.6版本的内核是最适合那些刚初学linux内核的人群,里面的模块驱动和内核的裁剪都十分的清晰
linux-2.6.28内核配置中文手册,讲解make menuconfig之后出现的配置界面的每一项的含义
linux-2.6.28内核配置中文手册
这个文档是从从网上下的,希望对编译内核的人有所帮助,些的比较详细,而且是2.6.28内核版本的
含有gspca驱动的linux内核2.6.28
Samsung发布的针对S3C6410 Linux, 是目前针对S3C6410功能支持最全的linux操作系统,验证过可以正常使用。
代码实现系统调用,字符设备驱动的编写,内存分配管理机制
OK6410开发板LINUX2.6.28用户手册,介绍ok6410linux开发流程等
移植平台:linux2.6.28 开发板:飞凌TE6410 (256M RAM 2G NAND) 网卡:ENC28J60 SPI 测试用的工具:Saleae logic (逻辑分析仪),Iris 抓包工具 6410作为一颗强大的ARM11处理器,网卡模块已经是相当的成熟(如:...
OK6410-A开发板LINUX2.6.28用户手册,教你怎么烧写linux!
Linux Kernel Configuration Manul(2.6.28) Linux_Kernel核心中文手册(内核图解)pdf chm
含有gspca驱动的linux内核2.6.28
含有gspca驱动的linux内核2.6.28
含有gspca驱动的linux内核2.6.28
嵌入式学习内核编译配置等 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
移植平台:linux2.6.28 开发板:飞凌TE6410 (256M RAM 2G NAND) 网卡:ENC28J60 SPI 测试用的工具:Saleae logic (逻辑分析仪),Iris 抓包工具 6410作为一颗强大的ARM11处理器,网卡模块已经是相当的成熟(如:...
编译内核以内核Linux-2.6.28为例。 一、制作内核2.6.28模块 1、 取内核Linux-2.6.28.tar.bz2压缩包放于目录kernels下并解压,命令如下: mv Linux-2.6.28.tar.bz2 /usr/src/kernels/ tar xvf Linux-2.6.28.tar.bz2...
OK6410-A开发板LINUX2.6.28用户手册.pdf 详细教程,本人亲测,并有笔记!
此源码已调试通过,相比内核自带的源码,思路更清晰,非常适合入门者学习。