![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux Kernel Source
文章平均质量分 76
BeyondNum
QQ:874928166
E-Mail:874928166@qq.com
展开
-
Linux Kernel Source - __FILE__ __LINE__ 妙用
在Linux 2.4内核代码wait.h,看到如下定义 #define WQ_BUG() BUG()其中BUG()是在page.h中定义的,定义如下: #define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0;原创 2013-03-05 22:18:29 · 915 阅读 · 0 评论 -
Linux Kernel Source - current 宏
今天在Linux 2.4源码sched.c中看到以下代码:void sleep_on(wait_queue_head_t *q){ SLEEP_ON_VAR current->state = TASK_UNINTERRUPTIBLE; SLEEP_ON_HEAD schedule(); SLEEP_ON_TAIL}sleep_on函数的主要作用是设置当前进程的状态为TASK_原创 2013-03-06 16:23:42 · 984 阅读 · 0 评论 -
Linux Kernel Source - 进程双向循环链表
哈希表的主要作用是根据进程的pid可以快速地找到对应的进程,但它没有反映进程创建的顺序,也无法反映进程之间的亲属关系,因此引入进程双向循环链表。union task_union { struct task_struct task; unsigned long stack[INIT_TASK_SIZE/sizeof(long)];};#define init_ta原创 2013-03-07 15:51:03 · 842 阅读 · 0 评论 -
Linux Kernel Source - 进程哈希表浅析
哈希表实际上是一个struct task_struct * 的指针数组,即每个元素指向一组pid的进程描述符链表(此处一组不是指gid相同,而是pid满足如下第三行的宏定义,且相同)。在Linux 2.4内核中定义如下:#define PIDHASH_SZ (4096 >> 2)extern struct task_struct *pidhash[PIDHASH_SZ]; /原创 2013-03-07 11:42:58 · 903 阅读 · 0 评论