Linux Dirver
文章平均质量分 63
AresDing
怪我咯。。。。
展开
-
Linux input固定设备/dev/input/eventX设备号
问题: 在嵌入式ARM Linux开发板调试触控的时候, 会经常碰见不同接口类型的触控板,有I2C的,USB等, 不同厂家不同型号的触控驱动在内核启动时加载顺序不同,也就导致了在/dev/input目录下生成的eventX的序号就不同, 而应用层一般会固件打开某个event设备节点,更换触控面板,可能会导致应用程序打开错误的event设备节点,因此想在内核里面做一下适配,是某些固定的触控设备最终在文件系统中生成固定的设备号文件节点。解决: 1. 查看系统总线上所有的input设备 # cat /pr原创 2021-04-26 14:52:43 · 3929 阅读 · 1 评论 -
Linux内核自旋锁(spinlock)使用与源码分析
一. spinlock_t结构体定义typedef struct spinlock { union { struct raw_spinlock rlock;#ifdef CONFIG_DEBUG_LOCK_ALLOC# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map)) struct { u8 __padding[LOCK_PADSIZE]; struct lockdep_map dep_map; }原创 2020-07-17 18:52:13 · 1593 阅读 · 0 评论 -
Linux内核原子(atomic)操作源码分析(基于ARM)
原子数据类型:typedef struct { int counter;}atomic_t;基本的原子操作函数接口:接口函数 描述 static inline void atomic_add(int i, atomic_t *v) 给一个原子变量v增加i static inline int atomic_add_return(int i, atomic_t *v) 同上,只不过将变量v的最新值返回 static inline void atomic_su..原创 2020-07-14 22:21:59 · 879 阅读 · 0 评论 -
Linux内核信号量(semaphore)使用与源码分析
一. 在Linux内核驱动中使用信号量(semaphore)常规操作步骤:[0]. 定义信号量结构体变量;struct semaphore sem;[1]. 初始化信号量变量void sema_init(struct semaphore *sem, int n);eg. sema_init(&sem, 1);[2]. 获取信号量:void down(struct semaphore *sem); // 获取信号量, 资源不足则睡眠等待...原创 2020-07-17 11:48:46 · 1381 阅读 · 0 评论 -
Linux内核等待队列(wait_queue)使用与源码分析
在Linux内核驱动中使用等待队列(wait_queue)常规操作步骤:[0]. 定义wait_queue_head_t等待队列头变量;wait_queue_heat_t simple_queue;[1]. 使用init_waitqueue_head(&simple_queue)初始化等待队列头;init_waitqueue_head(&simple_queue);[2]. 等待操作: wait_event(simple_queue, simple_f..原创 2020-07-14 17:20:13 · 835 阅读 · 0 评论