linux kernel
文章平均质量分 75
linux kernel相关知识学习的一些记录和总结
liuzl_2010
专注于Linux/android display领域
展开
-
Linux kernel中断下半部softirq、tasklet分析
中断下半部softirq、tasklet分析原创 2023-03-25 23:49:34 · 451 阅读 · 0 评论 -
linux kernel poll调用过程分析
linux kernel poll调用过程分析。弄清楚poll() sysfs 属性文件时fd.events使用那些event masks才是正确的,及错误使用event masks 的情况下poll() 无法阻塞的原因。原创 2023-03-25 23:21:18 · 623 阅读 · 0 评论 -
Linux kernel sysfs device_attribute节点的创建和读写分析
sysfs device_attribute节点的创建和读写分析内核版本:5.4。原创 2023-03-25 23:17:52 · 2452 阅读 · 0 评论 -
原子操作
目录1、原子操作:2、64位原子操作:3、原子位操作:// types.h (include\linux)typedef struct { int counter; } atomic_t; #if defined(CONFIG_64BIT) && !defined(CONFIG_GENERIC_ATOMIC64) typedef struct {...原创 2019-03-13 10:29:42 · 887 阅读 · 0 评论 -
自旋锁&&读写自旋锁
目录一、自旋锁:二、读写自旋锁一、自旋锁:自旋锁(spin lock)是一种对临界资源进行互斥手访问的典型手段,其名称来源于它的工作方式。为了获得一个自旋锁,在某CPU上运行的代码需先执行一个原子操作,该操作测试并设置(test-and-set)某个内存变量,由于它是原子操作,所以在该操作完成之前其他执行单元不可能访问这个内存变量。由于自旋锁适用于保持锁时间非常短,因此选择...原创 2019-03-13 10:54:35 · 628 阅读 · 0 评论 -
信号量&&读写信号量&&互斥体
一、信号量:信号量——是一种睡眠锁,如果一个任务试图获取一个不可用(已经被占用)的信号量时,信号量会将其推向一个等待队列,然后让其睡眠。这是处理器能重获自由,从而去执行其他的代码,当持有信号量可用(被释放)后,处于等待队列的那个任务将被唤醒,并获得该信号量#include <linux/semaphore.h>struct semaphore { raw_spinl...原创 2019-03-13 11:04:34 · 605 阅读 · 0 评论 -
等待队列&&完成量completion
目录1. 等待队列2. 完成量completion1. 等待队列等待队列(wait queue)用于使进程等待某一特定事件发生,而无须频繁轮询。进程在等待期间睡眠,在事件发生时内核自动唤醒。1、数据结构:每个等待队列都有一个队列头//wait.h (include\linux)struct __wait_queue_head { spinlock_t lock...原创 2019-03-13 11:09:30 · 733 阅读 · 0 评论 -
顺序锁
#include <linux/seqlock.h>typedef struct { struct seqcount seqcount; spinlock_t lock;} seqlock_t;DEFINE_SEQLOCK(x)#define DEFINE_SEQLOCK(x) \seqlock_t x = __SEQLOCK_UNLOCKED(x)举例:...原创 2019-03-13 11:12:44 · 289 阅读 · 0 评论 -
禁止抢占&&内存屏障
一、内核抢占:#include <linux/preempt.h>preempt_disable()preempt_enable()#define get_cpu() ({ preempt_disable(); smp_processor_id(); })#define put_cpu() preempt_enable()二、内存屏障:...原创 2019-03-13 11:13:40 · 339 阅读 · 0 评论