内核同步机制:mutex锁
Mutex锁的使用 函数定义 功能说明 mutex_lock(struct mutex *lock) 加锁,如果不可用,则睡眠(UNINTERRUPTIBLE) mutex_lock_interruptible(struct mutex *lock); 加锁,如果不可用,则睡眠(TASK_INTERRUPTIBLE) mutex_unlock(struct mutex *lock) 解锁 mutex_trylock(struct mutex *lock) 试图获取指定的 mutex,或得到返回1,否则返回 0 mutex_is_locked(struct mutex *lock) 如果 mutex 被占用返回1,否则返回 0 Mutex锁和其他锁的区别 mutex 一..
更多内核同步机制:信号量
信号量的使用 struct semaphore { raw_spinlock_t lock; unsigned int count; struct list_head wait_list; }; void sema_init(struct semaphore *sem, int val); void down(struct semaphore *sem); int down_interruptible(struct semaphore *sem); // 在睡眠期间可以被信号打断返回 void up(struct semaphore *sem) 源码分析 void down(struct semaphore *sem) { unsigned long flags; raw_spin_l..
更多Linux字符设备驱动与杂项设备驱动
字符设备驱动 graph LR A[字符设备驱动框架]-->B1[驱动初始化] B1[驱动初始化]-->C1[分配设备号] C1[分配设备号]-->D1[静态分配设备号] D1[静态分配设备号]-->E(register_chrdev_region) C1[分配设备号]-->D2[动态分配设备号] D2[动态分配设备号]-->F(alloc_chrdev_region) C1[分配设备号]-->D3[操作设备号dev_t] D3[操作设备号dev_t]-->Z1(MAJOR提取主设备号) D3[操作设备号dev_t]-->Z2(MINOR提取主设备号) D3[操作设备号dev_t]-->Z3(MKDRV将..
更多踩内存
对于C/C++程序员来说,踩内存问题是最难分析定位的,往往问题的源头都比较隐蔽,让人很难排查出问题的根源所在。
更多