当前位置:网站首页>DECLARE_ WAIT_ QUEUE_ HEAD、wake_ up_ Interruptible macro analysis
DECLARE_ WAIT_ QUEUE_ HEAD、wake_ up_ Interruptible macro analysis
2022-07-05 03:13:00 【_ Zer0】
DECLARE_WAIT_QUEUE_HEAD
// Source code
struct list_head {
struct list_head *next, *prev;
};
struct __wait_queue_head {
spinlock_t lock;
struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;
#define DECLARE_WAIT_QUEUE_HEAD (name)
wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name)
#define __WAIT_QUEUE_HEAD_INITIALIZER (name) {
.lock = __SPIN_LOCK_UNLOCKED(name.lock),
.task_list = {
&(name).task_list, &(name).task_list }
}
//DECLARE_WAIT_QUEUE_HEAD(wq); The result of unlocking the macro definition statement is as follows
wait_queue_head_t wq = {
.lock = __SPIN_LOCK_UNLOCKED(wq.lock),
.task_list = {
&(wq).task_list, &(wq).task_list }
}
#include <linux/wait.h>
// The following two lines are equivalent to DECLARE_WAIT_QUEUE_HEAD(wq);
wait_queue_head_t wq;
init_waitqueue_head(&wq);
wake_up_interruptible
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
void __wake_up(wait_queue_head_t *q, unsigned int mode,
int nr_exclusive, void *key)
{
unsigned long flags;
spin_lock_irqsave(&q->lock, flags);
__wake_up_common(q, mode, nr_exclusive, 0, key);
spin_unlock_irqrestore(&q->lock, flags);
}
边栏推荐
- Devtools的簡單使用
- ASP. Net core 6 framework unveiling example demonstration [01]: initial programming experience
- Scientific research: are women better than men?
- Azkaban actual combat
- Moco V2 literature research [self supervised learning]
- Anchor free series network yolox source code line by line explanation Part 2 (a total of 10, ensure to explain line by line, after reading, you can change the network at will, not just as a participan
- Azkaban概述
- Une question est de savoir si Flink SQL CDC peut définir le parallélisme. Si le parallélisme est supérieur à 1, il y aura un problème d'ordre?
- GFS distributed file system
- Asemi rectifier bridge 2w10 parameters, 2w10 specifications, 2w10 characteristics
猜你喜欢
Design and implementation of high availability website architecture
Mongodb common commands
ASP. Net core 6 framework unveiling example demonstration [01]: initial programming experience
LeetCode146. LRU cache
腾讯云,实现图片上传
Pat class a 1160 forever (class B 1104 forever)
Sqoop installation
Yyds dry goods inventory intelligent fan based on CC2530 design
Sqoop命令
[105] Baidu brain map - Online mind mapping tool
随机推荐
New interesting test applet source code_ Test available
There is a question about whether the parallelism can be set for Flink SQL CDC. If the parallelism is greater than 1, will there be a sequence problem?
LeetCode --- 1071. Great common divisor of strings problem solving Report
Design and implementation of community hospital information system
Scientific research: are women better than men?
Idea inheritance relationship
Utilisation simple de devtools
Azkaban installation and deployment
Returns the lowest common ancestor of two nodes in a binary tree
Tiny series rendering tutorial
Ask, does this ADB MySQL support sqlserver?
51 independent key basic experiment
单项框 复选框
Jd.com 2: how to prevent oversold in the deduction process of commodity inventory?
8. Commodity management - commodity classification
Azkaban实战
Class inheritance in C #
Why are there fewer and fewer good products produced by big Internet companies such as Tencent and Alibaba?
TCP security of network security foundation
Design and implementation of campus epidemic prevention and control system based on SSM