📄 pid.h
字号:
#ifndef _LINUX_PID_H#define _LINUX_PID_Henum 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -