![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux kernel 同步机制
linux kernel中的同步机制
「已注销」
这个作者很懒,什么都没留下…
展开
-
linux kernel --- cpumask and 设置irq的affinity
以下分析的源码是在kernel4.14中1. struct cpumask 结构typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;#define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)] //kernel4.14/include/linux/types.h#define BITS_TO_LONGS(nr) DIV_原创 2020-08-04 13:23:48 · 2968 阅读 · 0 评论 -
linux kernel --- per_cpu
一、 为什么要有 per_cpu1、 在多CPU的前提下,每个core有各自的数据,不会进行交互,但是对这些数据有共同的处理方法。2、为了保持每个cpu独立的处理自己的任务,不给其他cpu带来困扰。对于共同结构的数据,进行per_cpu 编程处理,有自己私有的数据段。3、如果没有 per_cpu 变量,当多个cpu要对同一个数据进行处理时,需要在处理时加锁,有了per_cpu,就省去了加锁步骤。二、 几个 API1、devm_alloc_percpu#define devm_alloc_perc原创 2020-08-10 19:28:10 · 466 阅读 · 0 评论 -
linux kernel 同步机制 -- completion完成量
在linux内核中,引入锁机制主要是解决资源并发与竞争问题;主要常用锁机制:信号量,自旋锁,互斥锁;线程间的 同步大多使用completion信号量,而互斥资源的保护大多使用自旋锁和互斥锁。.该篇文章主要讲解的是completion完成量。也算是信号量中的一种。completion信号量是一个轻量级的机制,它允许一个线程告诉另一个线程某个工作已经做完了。一般信号量的的处理会限制在一个函数内,但是有时候函数A的处理的前提条件是函数B,A必须等待B处理后才能继续,可以用信号量来进行处理,但linux原创 2020-08-05 20:59:39 · 1056 阅读 · 1 评论