在linux2.4内核源码中,关于task_struct有一部分关于hash表的结构,大略的定义如下:
哈希表定义:
extern struct task-struct *pidhash[HASH_SZ];
struct task_struct{
......
struct task_struct *pidhash_next;
struct task-struct **pidhash_prev;
}
//struct task-struct **pidhash_prev; 指向前一个结点pidhash_next的地址,而该pidhash_next是下一个结点的地址
static inline void unhash_pid(struct task_struct *p){
if(p->pidhash_next) //存在hash冲突
p->pidhash_next->pidhash_prev = p->pidhash_prev;
*(p->pidhash_prev) = p->pidhash_next;
}