
内核机制
并发,同步,锁等各种机制
蜀远Linux
linux爱好者,目前就职于北京某芯片半导体公司,主要从事于芯片soc的bring up及驱动开发,喜欢分析linux内核内存管理、调度、中断子系统等内核机制。
展开
-
【linux驱动基础】linux之mutex
1、定义static struct mutex t_mutex;2、初始化mutex_init(&t_mutex);3、获取互斥锁mutex_lock(&t_mutex);4、释放互斥锁mutex_unlock(&t_mutex);原创 2021-07-30 17:04:36 · 414 阅读 · 0 评论 -
【linux驱动基础】linux之container_of
container_of的使用container_of(参数1,参数2,参数3)功能:根据结构体变量成员地址获取整个结构体存储空间的首地址参数1:结构体变量的成员地址参数2:结构体类型参数3:结构体成员名原创 2021-07-30 13:17:17 · 111 阅读 · 0 评论 -
【linux驱动基础】linux之自定义debug输出
#define MBCS_DEBUG 1#if MBCS_DEBUG#define DBG(fmt...) printk(KERN_ALERT fmt)#else#define DBG(fmt...)#endif例子:DBG("hello world\n");DBG("into %s, line: %d\n", __func__, __LINE__);原创 2021-07-30 14:46:56 · 145 阅读 · 0 评论 -
【linux驱动基础】linux之semaphore
1、定义static semaphore sem;2、初始化sema_init(&sem, 1);3、获取信号量down_trylock(&sem);down_interruptible(&sem)4、释放信号量up(&sem);注意:semaphore与spin_lock的区别,spin_lock获取不到锁会在原地自旋,semaphore获取不到信号量会将进程挂起,进入睡眠down_trylock 与 down_interruptible的区原创 2021-07-30 16:56:50 · 391 阅读 · 0 评论 -
【linux驱动基础】linux之spinlock
spinlock的使用1、定义spinlock_t lock;2、初始化spin_lock_init(&lock);3、使用 - 方法1 spin_lock(&lock); ... spin_unlock(&lock); - 方法2 unsigned long flags; spin_lock_irqsave(&lock, flags); ... spin_unlock_irqrestore(&lock, flags);注意:原创 2021-07-30 14:01:13 · 220 阅读 · 0 评论 -
【linux驱动基础】linux之work_struct,delayed_work
工作队列work_struct,delayed_work的使用工作队列,work_struct1、定义static struct work_struct work;static void work_callback_func(struct work_struct *work) { } 2、初始化INIT_WORK(&work, work_callback_func); 3、触发工作队列schedule_work(&work); 延时工作队列,delay原创 2021-07-30 14:26:09 · 378 阅读 · 0 评论 -
【linux驱动基础】linux之timer_list
linux之timer_list使用1、定义static struct timer_list timer;static void timer_callback(unsigned long data){ ... mod_timer(&timer, jiffies + HZ*1);}2、初始化static void timer_init(void){ init_timer(&timer); timer.function = timer_callback; timer原创 2021-07-30 14:36:08 · 208 阅读 · 0 评论