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