usr/src/cmd/zoneadmd/zoneadmd.h
author dp
Thu, 22 Jun 2006 14:42:46 -0700
changeset 2267 c5d9a656170f
parent 1645 5c204cdba7d2
child 2303 327ca1e2fdf0
permissions -rw-r--r--
PSARC/2006/269 Zone Boot Arguments II 4943812 init improperly respawning stuff during reboot 4994285 RFE: zones should support boot arguments 6315349 halt.c contains an uninitialized variable 6395642 missing global zone checks for menu updates in uadmin(2) 6415633 krtld calls printf(), goes boom 6421372 libc's lintlib doesn't include <sys/uadmin.h> 6433526 zoneadm should use statvfs64
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 766
diff changeset
     5
 * Common Development and Distribution License (the "License").
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 766
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 766
diff changeset
    21
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
/*
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 766
diff changeset
    23
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#ifndef	_ZONEADMD_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#define	_ZONEADMD_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
 * Multi-threaded programs should avoid MT-unsafe library calls (i.e., any-
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
 * thing which could try to acquire a user-level lock unprotected by an atfork
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
 * handler) between fork(2) and exec(2).  See the pthread_atfork(3THR) man
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
 * page for details.  In particular, we want to avoid calls to zerror() in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
 * such situations, as it calls setlocale(3c) which is susceptible to such
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
 * problems.  So instead we have the child use one of the special exit codes
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
 * below when needed, and the parent look out for such possibilities and call
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
 * zerror() there.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
 * Since 0, 1 and 2 are generally used for success, general error, and usage,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 * we start with 3.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	ZEXIT_FORK		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
#define	ZEXIT_EXEC		4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#define	ZEXIT_ZONE_ENTER	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	DEVFSADM	"devfsadm"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
#define	DEVFSADM_PATH	"/usr/sbin/devfsadm"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
typedef struct zlog {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
	FILE *logfile;	/* file to log to */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
	 * The following are used if logging to a buffer.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
	char *log;	/* remaining log */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
	size_t loglen;	/* size of remaining log */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
	char *buf;	/* underlying storage */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
	size_t buflen;	/* total len of 'buf' */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
	char *locale;	/* locale to use for gettext() */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
} zlog_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
extern mutex_t lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
extern mutex_t msglock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
extern boolean_t in_death_throes;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
extern boolean_t bringup_failure_recovery;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
extern char *zone_name;
2267
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    74
extern char boot_args[BOOTARGS_MAX];
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    75
extern char bad_boot_arg[BOOTARGS_MAX];
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    76
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
extern void zerror(zlog_t *, boolean_t, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
extern char *localize_msg(char *locale, const char *msg);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
 * Eventstream interfaces.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
	Z_EVT_NULL = 0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
	Z_EVT_ZONE_BOOTING,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
	Z_EVT_ZONE_REBOOTING,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
	Z_EVT_ZONE_HALTED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
	Z_EVT_ZONE_READIED,
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 766
diff changeset
    90
	Z_EVT_ZONE_UNINSTALLING,
2267
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    91
	Z_EVT_ZONE_BOOTFAILED,
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    92
	Z_EVT_ZONE_BADARGS
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
} zone_evt_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
extern int eventstream_init();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
extern void eventstream_write(zone_evt_t evt);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
 * Virtual platform interfaces.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
 */
766
c521de78a32f PSARC 2005/474 Zones Upgrade (Ashanti and Zulu)
carlsonj
parents: 0
diff changeset
   101
extern zoneid_t vplat_create(zlog_t *, boolean_t);
c521de78a32f PSARC 2005/474 Zones Upgrade (Ashanti and Zulu)
carlsonj
parents: 0
diff changeset
   102
extern int vplat_bringup(zlog_t *, boolean_t);
c521de78a32f PSARC 2005/474 Zones Upgrade (Ashanti and Zulu)
carlsonj
parents: 0
diff changeset
   103
extern int vplat_teardown(zlog_t *, boolean_t);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
 * Console subsystem routines.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
extern int init_console_slave(zlog_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
extern void destroy_console_slave(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
extern void reset_slave_terminal(zlog_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
extern int init_console(zlog_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
extern void serve_console(zlog_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
#ifdef __cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
#endif /* _ZONEADMD_H */