Linux驱动
wo_wuhao
这个作者很懒,什么都没留下…
展开
-
内核初始化优化宏__init,__devexit等
内核使用了大量不同的宏来标记具有不同作用的函数和数据结构。如宏__init 、__devinit 等。这些宏在include/Linux/init.h 头文件中定义。编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提高内核效率。转载 2016-10-24 16:06:16 · 324 阅读 · 0 评论 -
Linux/Android——输入子系统input_event传递 (二)
input device转载 2017-01-22 10:44:52 · 614 阅读 · 0 评论 -
Linux系统调用(syscall)原理
Linux体系结构内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。如下图所示:linux 体系结构图从上图得知,Linux由用户空间和内核空间一般情况下,用户进程是不能访问内核的。它既不能访问内核所在的内存空间,也不能调用内核中的函数。Linux内核中设置了一组用于实现各种系统功能的子程序,用户可以通过调用他们访问linux内核的数据和函数,这...转载 2018-02-09 09:55:19 · 3828 阅读 · 0 评论 -
linux系统调用表(system call table)
系统调用号函数名入口点源代码0readsys_readfs/read_write.c1writesys_writefs/read_write.c2opensys_openfs/open.c3closesys_closefs/open.c4statsys_newstatfs/stat.c5fstatsys_newfstatfs/stat.c6lstatsys_newlstatfs/stat.c7po...转载 2018-02-09 09:59:24 · 6058 阅读 · 0 评论 -
对entry-common.S和call.S的部分理解
内核版本: linux-2.6.30.4文件:linux-2.6.30.4/arch/arm/kernel/entry-common.Slinux-2.6.30.4/arch/arm/kernel/calls.Scalls.S: 1: /* 2: * linux/arch/arm/kernel/calls.S 3: * 4: * Copyright (C) 1995-20...转载 2018-02-09 10:56:33 · 712 阅读 · 0 评论 -
Linux内核添加系统调用
1、目的:在现有的系统中添加一个不用传递参数的系统调用。这个系统调用的功能是实现遍历系统中的所有进程。实验主要内容:添加系统调用的名字利用标准 C 库进行包装添加系统调用号在系统调用表中添加相应表项sys_mysyscall 的实现编写用户态测试程序2、步骤:a)安装依赖库:[plain] view plain copysudo apt-get install libncurses5-dev //...转载 2018-02-09 10:58:47 · 767 阅读 · 0 评论 -
linux 设备驱动注册
内核中每个字符设备都对应一个 cdev结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {struct kobject kobj; // 每个 cdev都是一个 kobjectstruct module *owner; //指向实现驱动的模块const struct file_operations *...转载 2018-02-09 15:43:21 · 402 阅读 · 0 评论 -
ioctl函数详解
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。一、在用户空间,使用ioctl系统调用来控制设备,原型如下:[cpp] view plain copyint ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符 cmd:控制命令 ...:可选参数:插入*argp,具体内容依赖于cmd */ 用户程序所作的只是通过命令码告诉驱动程...转载 2018-02-08 14:59:08 · 3897 阅读 · 0 评论 -
IOCTL函数用法详解
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, …); 其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的...转载 2018-02-08 15:00:19 · 1576 阅读 · 0 评论 -
Linux/Android——usb触摸屏驱动 - usbtouchscreen (一)
Input device转载 2017-01-22 10:42:39 · 2600 阅读 · 0 评论 -
dump_stack内核调试
当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源转载 2017-01-09 13:49:32 · 313 阅读 · 0 评论 -
platform_device与platform_driver
platform_device与platform_driver转载 2016-10-15 09:59:21 · 265 阅读 · 0 评论 -
Linux内核container_of详解(图解)
/** * container_of - 通过结构体的一个成员获取容器结构体的指针 * @ptr: 指向成员的指针。 * @type: 成员所嵌入的容器结构体类型。 * @member: 结构体中的成员名。 * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \转载 2016-10-15 10:42:35 · 284 阅读 · 0 评论 -
[驱动注册]platform_driver_register()与platform_device_register()
platform_driver_register()与platform_device_register()转载 2016-10-15 10:49:04 · 1014 阅读 · 0 评论 -
linux内核register_chrdev_region()系列函数
linux内核register_chrdev_region()系列函数转载 2016-10-15 17:55:29 · 470 阅读 · 0 评论 -
Linux下PCI设备驱动程序开发(2)
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。转载 2016-10-20 10:08:25 · 812 阅读 · 0 评论 -
linux驱动头文件说明
linux驱动头文件说明转载 2016-11-16 09:18:20 · 279 阅读 · 0 评论 -
Linux下PCI设备驱动程序开发(1)
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。转载 2016-10-20 09:51:39 · 3580 阅读 · 0 评论 -
多模块文件编译为一个,例如KO
一、将本该被分别编译成device1.ko和driver2.ko的device1.c、driver2.c编译成一个deviceall.ko文件采用方法:第一步、修改C文件1、去掉device1.c文件里module_init(fun1)、module_exit(fun2)中fun1、fun2 函数原型的关键字static2、注销device1.c文件里module_init(fun1)、modul...原创 2018-06-07 20:06:54 · 1010 阅读 · 0 评论