内核
水木无痕
这个作者很懒,什么都没留下…
展开
-
really_probe()函数
static int really_probe(struct device *dev, struct device_driver *drv){ int ret = -EPROBE_DEFER; int local_trigger_count = atomic_read(&deferred_trigger_count); bool test_...原创 2019-07-09 17:45:10 · 2109 阅读 · 0 评论 -
linux等待队列使用步骤
在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。wait queue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现). Linux-2.6提供如下关于等待队列的操作:转载 2014-08-05 15:37:39 · 333 阅读 · 0 评论 -
linux内核部件分析之waitqueue与线程的阻塞
当你必须一个复杂的系统,协调系统的方方面面,灵活地支持各种机制和策略,即使很简单的问题也会变得很复杂。linux绝对就是这样一个复杂的系统。所以我们要理解它,尽量从原理的角度去理解事务的处理流程,尽量避免各种细枝末节的干扰,尽量规避那些足以压垮自己的庞然大物。(尽管细致末节和庞然大物很可能就是linux闪光的地方,但我们还是小心为上。)原理 现在我们来考虑linux中线程的阻塞。它的转载 2014-07-30 20:40:47 · 471 阅读 · 0 评论 -
内核配置与裁剪浅析
Linux内核裁减 (1)安装新内核: i)将新内核copy到/usr/src下, #tar xzvf linux-2.6.38.4.tar.gz -----解压缩. ii) 将名为linux的符号链接删掉,这是旧版本内核的符号链接. #ln -s linux-2.6.38.4 linux ------建立linux-2.6.38.4的符号链接linux. (2)设置内核. # cd /usr转载 2014-08-06 15:02:19 · 1176 阅读 · 0 评论 -
Linux内核的同步机制
本文周详的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用需求及一些典型示例 一、引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程相同也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。 在主流的L转载 2014-08-08 10:50:43 · 361 阅读 · 0 评论 -
yaffs2补丁与patch-ker.sh
直接 # ./patch-ker.sh c linux-3.16出错:更改为./pa原创 2014-09-02 10:50:01 · 1067 阅读 · 0 评论 -
Android内核驱动开发中的Kconfig文件结构分析(图文)
参考文献:http://www.ylmf.net/zhuanti/zt02/2010/1108/8747.htmlhttp://www.linuxdiyf.com/viewarticle.php?id=107960http://wenku.baidu.com/view/9b156d1f650e52ea55189852.htmlhttp://wenku.bai转载 2014-09-02 16:20:19 · 367 阅读 · 0 评论 -
Linux Kconfig及Makefile学习----2009.10
Linux Kconfig及Makefile学习内核源码树的目录下都有两个文档Kconfig (2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内转载 2014-09-02 16:59:04 · 350 阅读 · 0 评论 -
kobject和sysfs
sysfs调用kobjecthome/disk1t/sprdroidp_trunk_k414_dev/kernel$ grep -nr kobject drivers/usb/drivers/usb/core/sysfs.c:822:static umode_t dev_string_attrs_are_visible(struct kobject *kobj,drivers/usb/core/s...原创 2018-07-12 11:16:32 · 377 阅读 · 0 评论 -
INIT_WORK的理解
#define INIT_WORK(_work, _func, _data) \do { \INIT_LIST_HEAD(&(_work)->entry); \(_work)->pending = 0; \PREPARE_WORK((_work), (_func), (_data)); \init_timer(&(_work)->timer); \}...原创 2018-08-27 13:59:07 · 15884 阅读 · 0 评论 -
mutex_init() / mutex_lock() / mutex_unlock()
请求1). 初始化互斥体 -- mutex_init();2). 获得互斥体 -- mutex_lock();3). 释放互斥体 -- mutex_unlock();1.mutex_init(), 注意mutex使用之前都需要先initvoid__mutex_init(struct mutex *lock, const char *name, struct lock_class...原创 2018-09-05 13:21:03 · 6522 阅读 · 0 评论 -
USB设备插拔检测
1)hub初始化时hub_wq = alloc_workqueue(“usb_hub_wq”, WQ_FREEZABLE, 0);INIT_WORK(&hub->events, hub_event)queue_work(hub_wq, &hub->events)–alloc_workqueue(“usb_hub_wq”, WQ_FREEZABLE, 0)此函数...原创 2018-09-20 17:26:29 · 1214 阅读 · 0 评论 -
USB设备插拔检测
1)hub初始化时hub_wq = alloc_workqueue(“usb_hub_wq”, WQ_FREEZABLE, 0);INIT_WORK(&hub->events, hub_event)queue_work(hub_wq, &hub->events)–alloc_workqueue(“usb_hub_wq”, WQ_FREEZABLE, 0)此函数...原创 2018-09-21 13:33:07 · 886 阅读 · 0 评论 -
struct list_head/LIST_HEAD以及LIST_HEAD_INIT/INIT_LIST_HEAD
仅仅为struct list_head相关的两个宏:#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)static inline void INIT_LIST_HEAD...原创 2018-09-27 14:26:09 · 1909 阅读 · 0 评论 -
内核模块学习
向冀博大神学习:module#ifndef __KERNEL__# define __KERNEL__#endif#ifndef MODULE# define MODULE#endif#include #include #include MODULE_LICENSE("Dual BSD/GPL");static int h原创 2014-07-22 20:02:16 · 519 阅读 · 0 评论