prtable.h revision 4321:a8930ec16e52
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 2007 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#ifndef _PRTABLE_H 27#define _PRTABLE_H 28 29#pragma ident "%Z%%M% %I% %E% SMI" 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 uid_t u_id; 50 char u_name[LOGNAME_MAX+1]; 51} name_t; 52 53typedef struct { 54 size_t n_size; 55 size_t n_nent; 56 name_t *n_list; 57} nametbl_t; 58 59typedef struct { 60 zoneid_t z_id; 61 char z_name[ZONENAME_MAX]; 62} zonename_t; 63 64typedef struct { 65 size_t z_size; 66 size_t z_nent; 67 zonename_t *z_list; 68} zonetbl_t; 69 70typedef struct plwp { /* linked list of pointers to lwps */ 71 pid_t l_pid; 72 id_t l_lwpid; 73 int l_active; 74 lwp_info_t *l_lwp; 75 struct plwp *l_next; 76} plwp_t; 77 78extern void pwd_getname(uid_t, char *, int); 79extern void add_uid(nametbl_t *, char *); 80extern int has_uid(nametbl_t *, uid_t); 81extern void add_element(table_t *, long); 82extern int has_element(table_t *, long); 83extern void add_zone(zonetbl_t *, char *); 84extern int has_zone(zonetbl_t *, zoneid_t); 85extern void convert_zone(zonetbl_t *); 86extern int foreach_element(table_t *, void *, void (*)(long, void *)); 87extern void lwpid_init(); 88extern void lwpid_add(lwp_info_t *, pid_t, id_t); 89extern lwp_info_t *lwpid_get(pid_t, id_t); 90extern int lwpid_pidcheck(pid_t); 91extern void lwpid_del(pid_t, id_t); 92extern void lwpid_set_active(pid_t, id_t); 93extern int lwpid_is_active(pid_t, id_t); 94 95#ifdef __cplusplus 96} 97#endif 98 99#endif /* _PRTABLE_H */ 100