version 1.1.1.1, 2008/06/03 10:38:51 |
version 1.1.1.1.2.1, 2008/08/13 17:12:45 |
|
|
head = &pid_hash[IDHASH(pid)]; |
head = &pid_hash[IDHASH(pid)]; |
n = list_first(head); |
n = list_first(head); |
while (n != head) { |
while (n != head) { |
p = list_entry(n, struct proc, pid_link); |
p = list_entry(n, struct proc, p_pid_link); |
if (p->pid == pid) |
if (p->p_pid == pid) |
return p; |
return p; |
n = list_next(n); |
n = list_next(n); |
} |
} |
|
|
head = &pgid_hash[IDHASH(pgid)]; |
head = &pgid_hash[IDHASH(pgid)]; |
n = list_first(head); |
n = list_first(head); |
while (n != head) { |
while (n != head) { |
g = list_entry(n, struct pgrp, pgid_link); |
g = list_entry(n, struct pgrp, pg_link); |
if (g->pgid == pgid) |
if (g->pg_pgid == pgid) |
return g; |
return g; |
n = list_next(n); |
n = list_next(n); |
} |
} |
|
|
head = &task_hash[IDHASH(task)]; |
head = &task_hash[IDHASH(task)]; |
n = list_first(head); |
n = list_first(head); |
while (n != head) { |
while (n != head) { |
p = list_entry(n, struct proc, task_link); |
p = list_entry(n, struct proc, p_task_link); |
if (p->task == task) |
if (p->p_task == task) |
return p; |
return p; |
n = list_next(n); |
n = list_next(n); |
} |
} |
|
|
* This routine assumes pid and task data has been already initialized. |
* This routine assumes pid and task data has been already initialized. |
*/ |
*/ |
void |
void |
proc_add(struct proc *proc) |
proc_add(struct proc *p) |
{ |
{ |
|
|
list_insert(&pid_hash[IDHASH(proc->pid)], &proc->pid_link); |
list_insert(&pid_hash[IDHASH(p->p_pid)], &p->p_pid_link); |
list_insert(&task_hash[IDHASH(proc->task)], &proc->task_link); |
list_insert(&task_hash[IDHASH(p->p_task)], &p->p_task_link); |
} |
} |
|
|
/* |
/* |
* Remove process from both of pid table and task table. |
* Remove process from both of pid table and task table. |
*/ |
*/ |
void |
void |
proc_remove(struct proc *proc) |
proc_remove(struct proc *p) |
{ |
{ |
|
|
list_remove(&proc->pid_link); |
list_remove(&p->p_pid_link); |
list_remove(&proc->task_link); |
list_remove(&p->p_task_link); |
} |
} |
|
|
/* |
/* |
|
|
pgrp_add(struct pgrp *pgrp) |
pgrp_add(struct pgrp *pgrp) |
{ |
{ |
|
|
list_insert(&pgid_hash[IDHASH(pgrp->pgid)], &pgrp->pgid_link); |
list_insert(&pgid_hash[IDHASH(pgrp->pg_pgid)], &pgrp->pg_link); |
} |
} |
|
|
/* |
/* |
|
|
pgrp_remove(struct pgrp *pgrp) |
pgrp_remove(struct pgrp *pgrp) |
{ |
{ |
|
|
list_remove(&pgrp->pgid_link); |
list_remove(&pgrp->pg_link); |
} |
} |
|
|
/* |
/* |