pid.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:1k
- #ifndef _LINUX_PID_H
- #define _LINUX_PID_H
- enum pid_type
- {
- PIDTYPE_PID,
- PIDTYPE_TGID,
- PIDTYPE_PGID,
- PIDTYPE_SID,
- PIDTYPE_MAX
- };
- struct pid
- {
- /* Try to keep pid_chain in the same cacheline as nr for find_pid */
- int nr;
- struct hlist_node pid_chain;
- /* list of pids with the same nr, only one of them is in the hash */
- struct list_head pid_list;
- };
- #define pid_task(elem, type)
- list_entry(elem, struct task_struct, pids[type].pid_list)
- /*
- * attach_pid() and detach_pid() must be called with the tasklist_lock
- * write-held.
- */
- extern int FASTCALL(attach_pid(struct task_struct *task, enum pid_type type, int nr));
- extern void FASTCALL(detach_pid(struct task_struct *task, enum pid_type));
- /*
- * look up a PID in the hash table. Must be called with the tasklist_lock
- * held.
- */
- extern struct pid *FASTCALL(find_pid(enum pid_type, int));
- extern int alloc_pidmap(void);
- extern void FASTCALL(free_pidmap(int));
- extern void switch_exec_pids(struct task_struct *leader, struct task_struct *thread);
- #define do_each_task_pid(who, type, task)
- if ((task = find_task_by_pid_type(type, who))) {
- prefetch((task)->pids[type].pid_list.next);
- do {
- #define while_each_task_pid(who, type, task)
- } while (task = pid_task((task)->pids[type].pid_list.next,
- type),
- prefetch((task)->pids[type].pid_list.next),
- hlist_unhashed(&(task)->pids[type].pid_chain));
- }
- #endif /* _LINUX_PID_H */