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 /* 23 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 26 #ifndef _UTILS_H 27 #define _UTILS_H 28 29 #include <assert.h> 30 #include <libintl.h> 31 #include <stdarg.h> 32 #include <time.h> 33 #include <libzonecfg.h> 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 #define E_SUCCESS 0 /* Exit status for success */ 40 #define E_ERROR 1 /* Exit status for error */ 41 #define E_USAGE 2 /* Exit status for usage error */ 42 43 /* 44 * Message filter levels by priority 45 */ 46 typedef enum rcm_level { 47 RCM_NONE = 0, /* No messages */ 48 RCM_ERR, /* Errors only */ 49 RCM_WARN, /* Warnings */ 50 RCM_INFO, /* Information */ 51 RCM_DEBUG, /* Everything */ 52 RCM_DEBUG_HIGH /* Fire hose */ 53 } rcm_level_t; 54 55 /* 56 * Message destinations 57 */ 58 typedef enum rcm_dst { 59 RCD_STD = 1, /* Standard output/error, depending */ 60 /* on level */ 61 RCD_SYSLOG /* syslog() daemon facility */ 62 } rcm_dst_t; 63 64 typedef struct zone_entry { 65 zoneid_t zid; 66 char zname[ZONENAME_MAX]; 67 } zone_entry_t; 68 69 #define LINELEN 256 /* max. message length */ 70 71 #ifdef DEBUG 72 #undef ASSERT 73 #define ASSERT(x) (assert(x)) 74 #else /* !DEBUG */ 75 #undef ASSERT 76 #define ASSERT(x) ((void)0) 77 #endif /* DEBUG */ 78 79 #ifdef DEBUG_MSG 80 extern void debug(char *, ...); 81 extern void debug_high(char *, ...); 82 #else /* !DEBUG_MSG */ 83 /*LINTED: static unused*/ 84 static void debug(char *format, ...) /*ARGSUSED*/ {} 85 /*LINTED: static unused*/ 86 static void debug_high(char *format, ...) /*ARGSUSED*/ {} 87 #endif /* DEBUG_MSG */ 88 89 extern void die(char *, ...); 90 extern void info(char *, ...); 91 extern rcm_level_t get_message_priority(void); 92 extern rcm_level_t set_message_priority(rcm_level_t); 93 extern rcm_dst_t set_message_destination(rcm_dst_t); 94 extern char *setpname(char *); 95 extern void warn(const char *, ...); 96 extern int valid_abspath(char *); 97 extern void vdprintfe(int, const char *, va_list); 98 extern void dprintfe(int, char *, ...); 99 extern void hrt2ts(hrtime_t, timestruc_t *); 100 extern int xatoi(char *); 101 extern int get_running_zones(uint_t *, zone_entry_t **); 102 103 #ifdef __cplusplus 104 } 105 #endif 106 107 #endif /* _UTILS_H */ 108