linux/include/linux/pid.h
<<
>>
Prefs
   1#ifndef _LINUX_PID_H
   2#define _LINUX_PID_H
   3
   4enum pid_type
   5{
   6        PIDTYPE_PID,
   7        PIDTYPE_TGID,
   8        PIDTYPE_PGID,
   9        PIDTYPE_SID,
  10        PIDTYPE_MAX
  11};
  12
  13struct pid
  14{
  15        /* Try to keep pid_chain in the same cacheline as nr for find_pid */
  16        int nr;
  17        struct hlist_node pid_chain;
  18        /* list of pids with the same nr, only one of them is in the hash */
  19        struct list_head pid_list;
  20};
  21
  22#define pid_task(elem, type) \
  23        list_entry(elem, struct task_struct, pids[type].pid_list)
  24
  25/*
  26 * attach_pid() and detach_pid() must be called with the tasklist_lock
  27 * write-held.
  28 */
  29extern int FASTCALL(attach_pid(struct task_struct *task, enum pid_type type, int nr));
  30
  31extern void FASTCALL(detach_pid(struct task_struct *task, enum pid_type));
  32
  33/*
  34 * look up a PID in the hash table. Must be called with the tasklist_lock
  35 * held.
  36 */
  37extern struct pid *FASTCALL(find_pid(enum pid_type, int));
  38
  39extern int alloc_pidmap(void);
  40extern void FASTCALL(free_pidmap(int));
  41extern void switch_exec_pids(struct task_struct *leader, struct task_struct *thread);
  42
  43#define do_each_task_pid(who, type, task)                               \
  44        if ((task = find_task_by_pid_type(type, who))) {                \
  45                prefetch((task)->pids[type].pid_list.next);             \
  46                do {
  47
  48#define while_each_task_pid(who, type, task)                            \
  49                } while (task = pid_task((task)->pids[type].pid_list.next,\
  50                                                type),                  \
  51                        prefetch((task)->pids[type].pid_list.next),     \
  52                        hlist_unhashed(&(task)->pids[type].pid_chain)); \
  53        }                                                               \
  54
  55#endif /* _LINUX_PID_H */
  56
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.