Kernel function
Dennis_Wang
这个作者很懒,什么都没留下…
展开
-
Linux内核spin_lock与spin_lock_irq分析
在Linux内核中何时使用spin_lock,何时使用spin_lock_irqsave很容易混淆。首先看一下代码是如何实现的。spin_lock的调用关系 spin_lock | + -----> raw_spin_lock |+------> _raw_spin_lock转载 2013-10-29 15:03:02 · 793 阅读 · 0 评论 -
kobject_uevent
前言这两天遇到一些 udev 的问题, 顺便阅读了一下文档(见参考文档), 基本了解了 udev的机制。嵌入式系统性能很重要,于是对内核这一块进行了性能方面的研究。内核大概20多处会调用了 kobject_uevent 函数发送 KOBJ_ADD / KOBJ_REMOVE等事件。其中我们最关心的就是在device_add/device_del 中向用户空间发送设备的添加、删除信息。k转载 2014-08-13 22:02:08 · 3019 阅读 · 0 评论 -
Kobject结构体分析
kobject是组成设备device、驱动driver、总线bus、class的基本结构。如果把前者看成基类,则后者均为它的派生产物。device、driver、bus、class构成了设备模型,而kobject内嵌于其中,将这些设备模型的部件组织起来,并形成了sysfs文件系统。kobject就是device、driver、bus、class在文件系统中的代表。在sysfs操作设备时,也必须通过转载 2014-04-25 14:30:08 · 800 阅读 · 0 评论 -
在sys目录创建接口
在sys目录创建/sys/zwx_demo/zwx_test_status 接口 int zwx_test_status = 0; //文件zwx_test_status的默认值static struct kobject *zwx_test_kobj;static ssize_t zwx_test_status_show(struct kobject *kobj, str转载 2014-04-22 16:33:44 · 1047 阅读 · 0 评论 -
THIS_MODULE详解
转帖网址:http://blog.csdn.net/a954423389/archive/2010/12/27/6101369.aspx 源码位置:@ kernel/module.c@ include/linux/module.h结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插转载 2014-04-18 15:35:33 · 1820 阅读 · 0 评论 -
sysfs 文件系统详解
sysfs是用于表现设备驱动模型的文件系统,它基于ramfs。要学习linux的设备驱动模型,就要先做好底层工作,总结sysfs提供给外界的API就是其中之一。sysfs文件系统中提供了四类文件的创建与管理,分别是目录、普通文件、软链接文件、二进制文件。目录层次往往代表着设备驱动模型的结构,软链接文件则代表着不同部分间的关系。比如某个设备的目录只出现在/sys/devices下,其它地方涉及到它时转载 2014-01-09 16:15:10 · 6104 阅读 · 0 评论 -
request_irq() linux注册中断服务
一、中断注册方法在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devn转载 2013-12-22 14:40:37 · 7886 阅读 · 1 评论 -
linux 同步机制之complete
在Linux内核中,completion是一种简单的同步机制,标志"things may proceed"。要使用completion,必须在文件中包含,同时创建一个类型为struct completion的变量。[cpp] view plaincopy这个变量可以静态地声明和初始化: DECLARE_COMPLETION(my_c转载 2013-12-22 16:35:00 · 1230 阅读 · 0 评论 -
内核request_mem_region 和 ioremap的理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令转载 2013-11-22 19:08:33 · 994 阅读 · 0 评论 -
DEVICE_ATTR
sysfs接口函数的建立_DEVICE_ATTR 2012-05-09 11:36:46| 分类:linux文件系统 | 标签:device_attr sysfs接口函数 |字号大中小 订阅说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _s转载 2013-11-20 10:29:34 · 2385 阅读 · 1 评论 -
MODULE_LICENCE 机制
源代码解析:宏MODULE_LICENSE("Dual BSD/GPL")的展开MODULE_LICENSE()在module.h定义为#define MODULE_LICENSE(_license) MODULE_INFO(license, _license)MODULE_INFO定义为#define MODULE_INFO(tag, info) __MODULE_INFO(转载 2013-11-18 10:08:40 · 3025 阅读 · 0 评论 -
gpio_request
gpio_request()其原型为 int gpio_request(unsigned gpio, const char *label)先说说其参数,gpio则为你要申请的哪一个管脚,label则是为其取一个名字。其具体实现如下:int gpio_request(unsigned gpio, const char *label){ struct gpio_desc *de转载 2013-10-29 14:59:27 · 2080 阅读 · 0 评论 -
Touch panel DTS 分析(MSM8994平台,Atmel 芯片)
Touch panel DTS 分析(MSM8994平台,Atmel 芯片)在MSM8994平台下,Touch panel的DTS节点写在/kernel/arch/arm/boot/dts/qcom/msm8994-mtp.dtsi文件中。具体代码如下:&soc { i2c@f9924000 {原创 2014-10-28 11:29:08 · 5777 阅读 · 0 评论