1 0 stevel /* 2 0 stevel * CDDL HEADER START 3 0 stevel * 4 0 stevel * The contents of this file are subject to the terms of the 5 4321 casper * Common Development and Distribution License (the "License"). 6 4321 casper * You may not use this file except in compliance with the License. 7 0 stevel * 8 0 stevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 0 stevel * or http://www.opensolaris.org/os/licensing. 10 0 stevel * See the License for the specific language governing permissions 11 0 stevel * and limitations under the License. 12 0 stevel * 13 0 stevel * When distributing Covered Code, include this CDDL HEADER in each 14 0 stevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 0 stevel * If applicable, add the following below this CDDL HEADER, with the 16 0 stevel * fields enclosed by brackets "[]" replaced with your own identifying 17 0 stevel * information: Portions Copyright [yyyy] [name of copyright owner] 18 0 stevel * 19 0 stevel * CDDL HEADER END 20 0 stevel */ 21 0 stevel /* 22 9966 Menno * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 0 stevel * Use is subject to license terms. 24 9966 Menno * 25 9966 Menno * Portions Copyright 2009 Chad Mynhier 26 0 stevel */ 27 0 stevel 28 0 stevel #ifndef _PRTABLE_H 29 0 stevel #define _PRTABLE_H 30 0 stevel 31 0 stevel #ifdef __cplusplus 32 0 stevel extern "C" { 33 0 stevel #endif 34 0 stevel 35 0 stevel #include <limits.h> 36 0 stevel #include <zone.h> 37 0 stevel #include "prstat.h" 38 0 stevel 39 0 stevel #define PLWP_TBL_SZ 4096 /* hash table of plwp_t structures */ 40 0 stevel #define LWP_ACTIVE 1 41 0 stevel 42 0 stevel typedef struct { 43 0 stevel size_t t_size; 44 0 stevel size_t t_nent; 45 0 stevel long *t_list; 46 0 stevel } table_t; 47 0 stevel 48 0 stevel typedef struct { 49 0 stevel size_t n_size; 50 0 stevel size_t n_nent; 51 9966 Menno uid_t *n_list; 52 9966 Menno } uidtbl_t; 53 0 stevel 54 0 stevel typedef struct { 55 0 stevel zoneid_t z_id; 56 0 stevel char z_name[ZONENAME_MAX]; 57 0 stevel } zonename_t; 58 0 stevel 59 0 stevel typedef struct { 60 0 stevel size_t z_size; 61 0 stevel size_t z_nent; 62 0 stevel zonename_t *z_list; 63 0 stevel } zonetbl_t; 64 0 stevel 65 0 stevel typedef struct plwp { /* linked list of pointers to lwps */ 66 0 stevel pid_t l_pid; 67 0 stevel id_t l_lwpid; 68 0 stevel int l_active; 69 0 stevel lwp_info_t *l_lwp; 70 0 stevel struct plwp *l_next; 71 0 stevel } plwp_t; 72 0 stevel 73 9966 Menno extern void pwd_getname(uid_t, char *, int, int); 74 9966 Menno extern void add_uid(uidtbl_t *, char *); 75 9966 Menno extern int has_uid(uidtbl_t *, uid_t); 76 0 stevel extern void add_element(table_t *, long); 77 0 stevel extern int has_element(table_t *, long); 78 0 stevel extern void add_zone(zonetbl_t *, char *); 79 0 stevel extern int has_zone(zonetbl_t *, zoneid_t); 80 0 stevel extern void convert_zone(zonetbl_t *); 81 0 stevel extern int foreach_element(table_t *, void *, void (*)(long, void *)); 82 0 stevel extern void lwpid_init(); 83 0 stevel extern void lwpid_add(lwp_info_t *, pid_t, id_t); 84 0 stevel extern lwp_info_t *lwpid_get(pid_t, id_t); 85 0 stevel extern int lwpid_pidcheck(pid_t); 86 0 stevel extern void lwpid_del(pid_t, id_t); 87 0 stevel extern void lwpid_set_active(pid_t, id_t); 88 0 stevel extern int lwpid_is_active(pid_t, id_t); 89 0 stevel 90 0 stevel #ifdef __cplusplus 91 0 stevel } 92 0 stevel #endif 93 0 stevel 94 0 stevel #endif /* _PRTABLE_H */ 95