| 993 | #define PIDHASH(pid) (&pidhashtbl[(pid) & pidhash]) |
| 994 | #define PIDHASHLOCK(pid) (&pidhashtbl_lock[((pid) & pidhashlock)]) |
| 995 | extern LIST_HEAD(pidhashhead, proc) *pidhashtbl; |
| 996 | extern struct sx *pidhashtbl_lock; |
| 997 | extern u_long pidhash; |
| 998 | extern u_long pidhashlock; |
| 999 | |
| 1000 | #define PGRPHASH(pgid) (&pgrphashtbl[(pgid) & pgrphash]) |
| 1001 | extern LIST_HEAD(pgrphashhead, pgrp) *pgrphashtbl; |
| 1002 | extern u_long pgrphash; |
| 1003 | |
| 1004 | extern struct sx allproc_lock; |
| 1005 | extern int allproc_gen; |
| 1006 | extern struct sx proctree_lock; |
| 1007 | extern struct mtx ppeers_lock; |
| 1008 | extern struct mtx procid_lock; |
| 1009 | extern struct proc proc0; /* Process slot for swapper. */ |
| 1010 | extern struct thread0_storage thread0_st; /* Primary thread in proc0. */ |
| 1011 | #define thread0 (thread0_st.t0st_thread) |
| 1012 | extern struct vmspace vmspace0; /* VM space for proc0. */ |
| 1013 | extern int hogticks; /* Limit on kernel cpu hogs. */ |
| 1014 | extern int lastpid; |
| 1015 | extern int nprocs, maxproc; /* Current and max number of procs. */ |
| 1016 | extern int maxprocperuid; /* Max procs per uid. */ |
| 1017 | extern u_long ps_arg_cache_limit; |
| 1018 | |
| 1019 | LIST_HEAD(proclist, proc); |
| 1020 | TAILQ_HEAD(procqueue, proc); |
| 1021 | TAILQ_HEAD(threadqueue, thread); |
| 1022 | extern struct proclist allproc; /* List of all processes. */ |
| 1023 | extern struct proc *initproc, *pageproc; /* Process slots for init, pager. */ |
| 1024 | |
| 1025 | extern struct uma_zone *proc_zone; |
| 1026 | extern struct uma_zone *pgrp_zone; |
| 1027 | |
| 1028 | struct proc *pfind(pid_t); /* Find process by id. */ |
| 1029 | struct proc *pfind_any(pid_t); /* Find (zombie) process by id. */ |
| 1030 | struct proc *pfind_any_locked(pid_t pid); /* Find process by id, locked. */ |
| 1031 | struct pgrp *pgfind(pid_t); /* Find process group by id. */ |
| 1032 | void pidhash_slockall(void); /* Shared lock all pid hash lists. */ |
| 1033 | void pidhash_sunlockall(void); /* Shared unlock all pid hash lists. */ |
| 1034 | |
| 1035 | struct fork_req { |
| 1036 | int fr_flags; |
| 1037 | int fr_pages; |
| 1038 | int *fr_pidp; |
| 1039 | struct proc **fr_procp; |
| 1040 | int *fr_pd_fd; |
| 1041 | int fr_pd_flags; |
| 1042 | struct filecaps *fr_pd_fcaps; |
| 1043 | int fr_flags2; |
| 1044 | #define FR2_DROPSIG_CAUGHT 0x00000001 /* Drop caught non-DFL signals */ |
| 1045 | #define FR2_SHARE_PATHS 0x00000002 /* Invert sense of RFFDG for paths */ |
| 1046 | }; |
| 1047 | |
| 1048 | /* |
| 1049 | * pget() flags. |
| 1050 | */ |
| 1051 | #define PGET_HOLD 0x00001 /* Hold the process. */ |
| 1052 | #define PGET_CANSEE 0x00002 /* Check against p_cansee(). */ |
no outgoing calls
no test coverage detected