1 2 #define TREE_DEPTH 32 3 #define TREE_STRING_SZ (2 + 2*TREE_DEPTH) 4 5 struct plist { 6 struct proc_t* nx; 7 struct proc_t** ppv; 8 }; 9 10 struct proc_t { 11 int pid; 12 char state; 13 struct proc_t *parent; 14 struct proc_t *child; 15 struct plist mlist; 16 struct plist broth; 17 struct plist hash; 18 void* priv; 19 }; 20 21 int update_tree(void del(void*)); 22 int update_tree(); 23 struct proc_t* find_by_pid(int pid); 24 struct proc_t* tree_start(int root, int start); 25 struct proc_t* tree_next(); 26 char *tree_string(int root, struct proc_t *proc); 27 28 extern int num_proc; 29 30 #ifdef HAVE_STRUCT_KINFO_PROC_KP_PROC 31 #ifdef KERN_PROC2 32 #define kinfo_pid p_pid 33 #define kinfo_ppid p_ppid 34 #define kinfo_tpgid p_tpgid 35 #define kinfo_svuid p_svuid 36 #define kinfo_stat p_stat 37 #define kinfo_comm p_comm 38 #define kinfo_tdev p_tdev 39 #else 40 #define kinfo_pid kp_proc.p_pid 41 #define kinfo_ppid kp_eproc.e_ppid 42 #define kinfo_tpgid kp_eproc.e_tpgid 43 #define kinfo_svuid kp_eproc.e_pcred.p_svuid 44 #define kinfo_stat kp_proc.p_stat 45 #define kinfo_comm kp_proc.p_comm 46 #define kinfo_tdev kp_eproc.e_tdev 47 #endif 48 #else 49 # if defined __DragonFly__ 50 #define kinfo_pid kp_pid 51 #define kinfo_ppid kp_ppid 52 #define kinfo_tpgid kp_tpgid 53 #define kinfo_svuid kp_svuid 54 #define kinfo_stat kp_stat 55 #define kinfo_comm kp_comm 56 #define kinfo_tdev kp_tdev 57 # else 58 #define kinfo_pid ki_pid 59 #define kinfo_ppid ki_ppid 60 #define kinfo_tpgid ki_tpgid 61 #define kinfo_svuid ki_svuid 62 #define kinfo_stat ki_stat 63 #define kinfo_comm ki_comm 64 #define kinfo_tdev ki_tdev 65 # endif 66 #endif 67