Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_proc.c
Show First 20 Lines • Show All 122 Lines • ▼ Show 20 Lines | |||||
* Other process lists | * Other process lists | ||||
*/ | */ | ||||
struct pidhashhead *pidhashtbl; | struct pidhashhead *pidhashtbl; | ||||
struct sx *pidhashtbl_lock; | struct sx *pidhashtbl_lock; | ||||
u_long pidhash; | u_long pidhash; | ||||
u_long pidhashlock; | u_long pidhashlock; | ||||
struct pgrphashhead *pgrphashtbl; | struct pgrphashhead *pgrphashtbl; | ||||
u_long pgrphash; | u_long pgrphash; | ||||
struct proclist allproc; | struct proclist allproc = LIST_HEAD_INITIALIZER(allproc); | ||||
struct sx __exclusive_cache_line allproc_lock; | struct sx __exclusive_cache_line allproc_lock; | ||||
struct sx __exclusive_cache_line proctree_lock; | struct sx __exclusive_cache_line proctree_lock; | ||||
struct mtx __exclusive_cache_line ppeers_lock; | struct mtx __exclusive_cache_line ppeers_lock; | ||||
struct mtx __exclusive_cache_line procid_lock; | struct mtx __exclusive_cache_line procid_lock; | ||||
uma_zone_t proc_zone; | uma_zone_t proc_zone; | ||||
uma_zone_t pgrp_zone; | uma_zone_t pgrp_zone; | ||||
/* | /* | ||||
Show All 40 Lines | |||||
procinit(void) | procinit(void) | ||||
{ | { | ||||
u_long i; | u_long i; | ||||
sx_init(&allproc_lock, "allproc"); | sx_init(&allproc_lock, "allproc"); | ||||
sx_init(&proctree_lock, "proctree"); | sx_init(&proctree_lock, "proctree"); | ||||
mtx_init(&ppeers_lock, "p_peers", NULL, MTX_DEF); | mtx_init(&ppeers_lock, "p_peers", NULL, MTX_DEF); | ||||
mtx_init(&procid_lock, "procid", NULL, MTX_DEF); | mtx_init(&procid_lock, "procid", NULL, MTX_DEF); | ||||
LIST_INIT(&allproc); | |||||
pidhashtbl = hashinit(maxproc / 4, M_PROC, &pidhash); | pidhashtbl = hashinit(maxproc / 4, M_PROC, &pidhash); | ||||
pidhashlock = (pidhash + 1) / 64; | pidhashlock = (pidhash + 1) / 64; | ||||
if (pidhashlock > 0) | if (pidhashlock > 0) | ||||
pidhashlock--; | pidhashlock--; | ||||
pidhashtbl_lock = malloc(sizeof(*pidhashtbl_lock) * (pidhashlock + 1), | pidhashtbl_lock = malloc(sizeof(*pidhashtbl_lock) * (pidhashlock + 1), | ||||
M_PROC, M_WAITOK | M_ZERO); | M_PROC, M_WAITOK | M_ZERO); | ||||
for (i = 0; i < pidhashlock + 1; i++) | for (i = 0; i < pidhashlock + 1; i++) | ||||
sx_init_flags(&pidhashtbl_lock[i], "pidhash", SX_DUPOK); | sx_init_flags(&pidhashtbl_lock[i], "pidhash", SX_DUPOK); | ||||
▲ Show 20 Lines • Show All 3,195 Lines • Show Last 20 Lines |