usr/src/cmd/svc/startd/startd.h
author lianep
Mon, 10 Jul 2006 18:12:06 -0700
changeset 2339 73c7b85b6be0
parent 1958 886c8ac12ef1
child 2747 87ae3ca2e4c8
permissions -rw-r--r--
6440500 no login prompt (hang) when filesystem/local fails
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
1712
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
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
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
1712
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
    22
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
#ifndef	_STARTD_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#define	_STARTD_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
#include <sys/time.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#include <librestart.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include <librestart_priv.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <libscf.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#include <libsysevent.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
#include <libuutil.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#include <pthread.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
#include <stdio.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#include <syslog.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
#include <umem.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 * We want MUTEX_HELD, but we also want pthreads.  So we're stuck with this.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	PTHREAD_MUTEX_HELD(m)	_mutex_held((struct _lwp_mutex *)(m))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#ifndef NDEBUG
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	MUTEX_LOCK(mp)	{						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
	int err;							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
	if ((err = pthread_mutex_lock((mp))) != 0) {			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
		(void) fprintf(stderr,					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
		    "pthread_mutex_lock() failed on %s:%d: %s\n",	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
		    __FILE__, __LINE__, strerror(err));			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
		abort();						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
	}								\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
#define	MUTEX_UNLOCK(mp)	{					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
	int err;							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
	if ((err = pthread_mutex_unlock((mp))) != 0) {			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
		(void) fprintf(stderr,					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
		    "pthread_mutex_unlock() failed on %s:%d: %s\n",	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
		    __FILE__, __LINE__, strerror(err));			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
		abort();						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
	}								\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	MUTEX_LOCK(mp)		(void) pthread_mutex_lock((mp))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define	MUTEX_UNLOCK(mp)	(void) pthread_mutex_unlock((mp))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
#ifndef NDEBUG
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
#define	bad_error(func, err)	{					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
	(void) fprintf(stderr, "%s:%d: %s() failed with unexpected "	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	    "error %d.  Aborting.\n", __FILE__, __LINE__, (func), (err)); \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
	abort();							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define	bad_error(func, err)	abort()
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
#define	min(a, b)	(((a) < (b)) ? (a) : (b))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define	FAULT_COUNT_INCR	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define	FAULT_COUNT_RESET	1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
#define	FAULT_THRESHOLD		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
#define	MAX_CONFIGD_RETRIES	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
#define	MAX_MOUNT_RETRIES	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
#define	MAX_SULOGIN_RETRIES	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
#define	RETURN_SUCCESS		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
#define	RETURN_RETRY		-1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
#define	RETURN_FATAL		-2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
#define	LIBSCF_SUCCESS		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
#define	LIBSCF_PROPERTY_ABSENT	-1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
#define	LIBSCF_PGROUP_ABSENT	-2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
#define	LIBSCF_PROPERTY_ERROR	-3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
#define	METHOD_START		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
#define	METHOD_STOP		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
#define	METHOD_REFRESH		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
#define	METHOD_TIMEOUT_INFINITE	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
 * Contract cookies used by startd.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
#define	CONFIGD_COOKIE		0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
#define	SULOGIN_COOKIE		0x11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
#define	METHOD_START_COOKIE	0x20
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define	METHOD_OTHER_COOKIE	0x21
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
#define	MONITOR_COOKIE		0x30
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
#define	ALLOC_RETRY		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
#define	ALLOC_DELAY		10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
#define	ALLOC_DELAY_MULT	10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
#define	safe_scf_scope_create(h)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
	libscf_object_create((void *(*)(scf_handle_t *))scf_scope_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
#define	safe_scf_service_create(h)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
	libscf_object_create((void *(*)(scf_handle_t *))scf_service_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
#define	safe_scf_instance_create(h)	libscf_object_create(	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
	(void *(*)(scf_handle_t *))scf_instance_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
#define	safe_scf_snapshot_create(h)	libscf_object_create(	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	(void *(*)(scf_handle_t *))scf_snapshot_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
#define	safe_scf_snaplevel_create(h)	libscf_object_create(	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	(void *(*)(scf_handle_t *))scf_snaplevel_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
#define	safe_scf_pg_create(h)		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	libscf_object_create((void *(*)(scf_handle_t *))scf_pg_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
#define	safe_scf_property_create(h)	libscf_object_create(	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	(void *(*)(scf_handle_t *))scf_property_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
#define	safe_scf_value_create(h)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	libscf_object_create((void *(*)(scf_handle_t *))scf_value_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
#define	safe_scf_iter_create(h)		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	libscf_object_create((void *(*)(scf_handle_t *))scf_iter_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
#define	safe_scf_transaction_create(h)	libscf_object_create(	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	(void *(*)(scf_handle_t *))	scf_transaction_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
#define	safe_scf_entry_create(h)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	libscf_object_create((void *(*)(scf_handle_t *))scf_entry_create, (h))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
#define	startd_alloc(sz)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	startd_alloc_retry((void *(*)(size_t, int))umem_alloc, (sz))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
#define	startd_zalloc(sz)	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
	startd_alloc_retry((void *(*)(size_t, int))umem_zalloc, (sz))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
extern pthread_mutexattr_t mutex_attrs;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
 * Definitions for administrative actions.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
 *   Note that the ordering in admin_action_t, admin_actions, and admin_events
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
 *   must match.  admin_actions and admin_events are defined in startd.c.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
#define	NACTIONS			6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
	ADMIN_EVENT_DEGRADED = 0x0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
	ADMIN_EVENT_MAINT_OFF,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	ADMIN_EVENT_MAINT_ON,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
	ADMIN_EVENT_MAINT_ON_IMMEDIATE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	ADMIN_EVENT_REFRESH,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	ADMIN_EVENT_RESTART
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
} admin_action_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
extern const char * const admin_actions[NACTIONS];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
extern const int admin_events[NACTIONS];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
#define	LOG_DATE_SIZE	32	/* Max size of timestamp in log output */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
extern ssize_t max_scf_name_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
extern ssize_t max_scf_value_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
extern ssize_t max_scf_fmri_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
extern mode_t fmask;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
extern mode_t dmask;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
#define	LOG_PREFIX_EARLY	"/etc/svc/volatile/"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
#define	LOG_PREFIX_NORMAL	"/var/svc/log/"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
#define	LOG_SUFFIX		".log"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
#define	STARTD_DEFAULT_LOG	"svc.startd.log"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
extern const char *log_directory;	/* Current log directory path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
#define	FS_TIMEZONE_DIR		"/usr/share/lib/zoneinfo"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
#define	FS_LOCALE_DIR		"/usr/lib/locale"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
 * Simple dictionary representation.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
typedef struct dictionary {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
	uu_list_t		*dict_list;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
	int			dict_new_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
	pthread_mutex_t		dict_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
} dictionary_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
typedef struct dict_entry {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
	int			de_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
	const char		*de_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
	uu_list_node_t		de_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
} dict_entry_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
extern dictionary_t *dictionary;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
typedef struct timeout_queue {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	uu_list_t		*tq_list;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
	pthread_mutex_t		tq_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
} timeout_queue_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
typedef struct timeout_entry {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
	hrtime_t		te_timeout;	/* timeout expiration time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	ctid_t			te_ctid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
	char			*te_fmri;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
	char			*te_logstem;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
	volatile int		te_fired;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	uu_list_node_t		te_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
} timeout_entry_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
extern timeout_queue_t *timeouts;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
 * State definitions.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	STATE_NONE = 0x0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
	STATE_UNINIT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
	STATE_MAINT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
	STATE_OFFLINE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
	STATE_DISABLED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
	STATE_ONLINE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
	STATE_DEGRADED
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
} instance_state_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
#define	STATE_MAX	(STATE_DEGRADED + 1)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
extern const char * const instance_state_str[STATE_MAX];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
	GVT_UNSUPPORTED = -1,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
	GVT_UNKNOWN = 0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
	GVT_SVC,		/* service */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
	GVT_INST,		/* instance */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
	GVT_FILE,		/* file: */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
	GVT_GROUP		/* dependency group */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
} gv_type_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
	DEPGRP_UNSUPPORTED = -1,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
	DEPGRP_REQUIRE_ANY = 1,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
	DEPGRP_REQUIRE_ALL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
	DEPGRP_EXCLUDE_ALL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
	DEPGRP_OPTIONAL_ALL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
} depgroup_type_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
	METHOD_RESTART_UNKNOWN = -1,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
	METHOD_RESTART_ALL = 0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
	METHOD_RESTART_EXTERNAL_FAULT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
	METHOD_RESTART_ANY_FAULT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
	METHOD_RESTART_OTHER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
} method_restart_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
2339
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   277
typedef enum {
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   278
	PROPAGATE_START,
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   279
	PROPAGATE_STOP,
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   280
	PROPAGATE_SAT
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   281
} propagate_event_t;
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   282
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
 * Graph representation.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
#define	GV_CONFIGURED	0x01	/* Service exists in repository, ready */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
#define	GV_ENABLED	0x02	/* Service should be online */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
#define	GV_ENBLD_NOOVR	0x04	/* GV_ENABLED, ignoring override */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
#define	GV_INSUBGRAPH	0x08	/* Current milestone depends on service */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
/* ID must come first to support search */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
typedef struct graph_vertex {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
	int				gv_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
	char				*gv_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
	uu_list_node_t			gv_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
	uint_t				gv_flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
	restarter_instance_state_t	gv_state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
	gv_type_t			gv_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
	depgroup_type_t			gv_depgroup;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
	restarter_error_t		gv_restart;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
	void				(*gv_start_f)(struct graph_vertex *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
	void				(*gv_post_online_f)(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
	void				(*gv_post_disable_f)(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
	int				gv_restarter_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
	evchan_t			*gv_restarter_channel;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
	int				gv_delegate_initialized;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
	evchan_t			*gv_delegate_channel;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
	uu_list_t			*gv_dependencies;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
	uu_list_t			*gv_dependents;
1712
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   317
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   318
	/*
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   319
	 * gv_refs represents the number of references besides dependencies.
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   320
	 * The vertex cannot be removed when gv_refs > 0.
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   321
	 *
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   322
	 * Currently, only relevant for GVT_SVC and GVT_INST type vertices.
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   323
	 */
c5243b0fd703 6266365 svc.startd tried to use deadbeef
rm88369
parents: 0
diff changeset
   324
	int 				gv_refs;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
} graph_vertex_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
typedef struct graph_edge {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
	graph_vertex_t	*ge_vertex;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
	uu_list_node_t	ge_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	graph_vertex_t	*ge_parent;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
} graph_edge_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
/*
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   334
 * Restarter transition outcomes
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
typedef enum {
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   337
	MAINT_REQUESTED,
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
	START_REQUESTED,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
	START_FAILED_REPEATEDLY,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
	START_FAILED_CONFIGURATION,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
	START_FAILED_FATAL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
	START_FAILED_TIMEOUT_FATAL,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
	START_FAILED_OTHER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
} start_outcome_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
typedef void (*instance_hook_t)(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
typedef struct service_hook_assn {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
	char	*sh_fmri;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
	instance_hook_t	sh_pre_online_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
	instance_hook_t	sh_post_online_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
	instance_hook_t	sh_post_offline_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
} service_hook_assn_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
 * Restarter instance stop reasons.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
	RSTOP_EXIT = 0x0,	/* exited or empty */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
	RSTOP_CORE,		/* core dumped */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
	RSTOP_SIGNAL,		/* external fatal signal received */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
	RSTOP_HWERR,		/* uncorrectable hardware error */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
	RSTOP_DEPENDENCY,	/* dependency activity caused stop */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
	RSTOP_DISABLE,		/* disabled */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
	RSTOP_RESTART		/* restart requested */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
} stop_cause_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
 * Restarter instance maintenance clear reasons.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
	RUNMAINT_CLEAR = 0x0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
	RUNMAINT_DISABLE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
} unmaint_cause_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
 * Restarter instance flags
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
#define	RINST_CONTRACT		0x00000000	/* progeny constitute inst */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
#define	RINST_TRANSIENT		0x10000000	/* inst operates momentarily */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
#define	RINST_WAIT		0x20000000	/* child constitutes inst */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
#define	RINST_STYLE_MASK	0xf0000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
#define	RINST_RETAKE_RUNNING	0x01000000	/* pending running snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
#define	RINST_RETAKE_START	0x02000000	/* pending start snapshot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
#define	RINST_RETAKE_MASK	0x0f000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
#define	RINST_START_TIMES	10		/* failures to consider */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
#define	RINST_FAILURE_RATE_NS	1000000000LL	/* 1 failure/second */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
/* Number of events in the queue when we start dropping ADMIN events. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
#define	RINST_QUEUE_THRESHOLD	100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
typedef struct restarter_inst {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
	int			ri_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
	instance_data_t		ri_i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
	char			*ri_common_name; /* template localized name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
	char			*ri_C_common_name; /* C locale name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
	char			*ri_logstem;	/* logfile name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
	char			*ri_utmpx_prefix;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
	uint_t			ri_flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
	instance_hook_t		ri_pre_online_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
	instance_hook_t		ri_post_online_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
	instance_hook_t		ri_post_offline_hook;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
	hrtime_t		ri_start_time[RINST_START_TIMES];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
	uint_t			ri_start_index;	/* times started */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
	uu_list_node_t		ri_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
	pthread_mutex_t		ri_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
	 * When we start a thread to we execute a method for this instance, we
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
	 * put the thread id in ri_method_thread.  Threads with ids other than
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
	 * this which acquire ri_lock while ri_method_thread is nonzero should
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
	 * wait on ri_method_cv.  ri_method_waiters should be incremented while
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
	 * waiting so the instance won't be deleted.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
	pthread_t		ri_method_thread;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
	pthread_cond_t		ri_method_cv;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
	uint_t			ri_method_waiters;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
	 * These fields are provided so functions can operate on this structure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
	 * and the repository without worrying about whether the instance has
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
	 * been deleted from the repository (this is possible because
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
	 * ri_i.i_fmri names the instance this structure represents -- see
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
	 * libscf_reget_inst()).  ri_m_inst is the scf_instance_t for the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   431
	 * instance, and ri_mi_deleted is true if the instance has been deleted.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
	scf_instance_t		*ri_m_inst;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   434
	boolean_t		ri_mi_deleted;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   435
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   436
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   437
	 * We maintain a pointer to any pending timeout for this instance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   438
	 * for quick reference/deletion.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   439
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   440
	timeout_entry_t		*ri_timeout;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
	 * Instance event queue.  Graph events are queued here as a list
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
	 * of restarter_instance_qentry_t's, and the lock is held separately.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
	 * If both ri_lock and ri_queue_lock are grabbed, ri_lock must be
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   446
	 * grabbed first.  ri_queue_lock protects all ri_queue_* structure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   447
	 * members.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   448
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   449
	pthread_mutex_t		ri_queue_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   450
	pthread_cond_t		ri_queue_cv;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   451
	uu_list_t		*ri_queue;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   452
	int			ri_queue_thread;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   453
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   454
} restarter_inst_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   455
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   456
typedef struct restarter_instance_list {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   457
	uu_list_t		*ril_instance_list;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   458
	pthread_mutex_t		ril_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   459
} restarter_instance_list_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   460
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   461
typedef struct restarter_instance_qentry {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   462
	restarter_event_type_t	riq_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   463
	uu_list_node_t		riq_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   464
} restarter_instance_qentry_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   465
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   466
typedef struct fork_info {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   467
	int			sf_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   468
	int			sf_method_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   469
	restarter_error_t	sf_event_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   470
} fork_info_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   471
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   472
typedef struct wait_info {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   473
	uu_list_node_t		wi_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   474
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   475
	int			wi_fd;		/* psinfo file descriptor */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   476
	id_t			wi_pid;		/* process ID */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   477
	const char		*wi_fmri;	/* instance FMRI */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   478
	int			wi_parent;	/* startd is parent */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   479
} wait_info_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   480
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   481
#define	STARTD_LOG_FILE		0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   482
#define	STARTD_LOG_TERMINAL	0x2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   483
#define	STARTD_LOG_SYSLOG	0x4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   484
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   485
#define	STARTD_BOOT_QUIET	0x1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   486
#define	STARTD_BOOT_VERBOSE	0x2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   487
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   488
typedef struct startd_state {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   489
	/* Logging configuration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   490
	char		*st_log_prefix;	/* directory prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   491
	char		*st_log_file;	/* startd file in above dir */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   492
	uint_t		st_log_flags;	/* message destination */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   493
	int		st_log_level_min; /* minimum required to log */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   494
	int		st_log_timezone_known; /* timezone is available */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   495
	int		st_log_locale_known; /* locale is available */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   496
	int		st_log_login_reached; /* login service reached */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   497
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   498
	/* Boot configuration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   499
	uint_t		st_boot_flags;	/* serial boot, etc. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   500
	uint_t		st_initial;	/* first startd on system */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   501
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   502
	/* System configuration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   503
	char		*st_subgraph;	/* milestone subgraph request */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   504
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   505
	uint_t		st_load_complete;  /* graph load completed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   506
	uint_t		st_load_instances; /* restarter instances to load */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   507
	pthread_mutex_t	st_load_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   508
	pthread_cond_t	st_load_cv;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   509
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   510
	/* Repository configuration */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   511
	pid_t		st_configd_pid;	/* PID of our svc.configd */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   512
					/* instance */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   513
	int		st_configd_lives; /* configd started */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   514
	pthread_mutex_t	st_configd_live_lock;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   515
	pthread_cond_t	st_configd_live_cv;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   516
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   517
	char		*st_door_path;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   518
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   519
	/* General information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   520
	uint_t		st_flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   521
	struct timeval	st_start_time;	/* effective system start time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   522
	char		*st_locale;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   523
} startd_state_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   524
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   525
extern startd_state_t *st;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   526
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   527
extern boolean_t booting_to_single_user;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   528
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   529
extern const char *event_names[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   530
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   531
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   532
 * Structures for contract to instance hash table, implemented in
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   533
 * contract.c and used by restarter.c and method.c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   534
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   535
typedef struct contract_entry {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   536
	ctid_t		ce_ctid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   537
	int		ce_instid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   538
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   539
	uu_list_node_t	ce_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   540
} contract_entry_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   541
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   542
uu_list_pool_t *contract_list_pool;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   543
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   544
/* contract.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   545
ctid_t contract_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   546
void contract_abandon(ctid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   547
int contract_kill(ctid_t, int, const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   548
int contract_is_empty(ctid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   549
void contract_hash_init();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   550
void contract_hash_store(ctid_t, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   551
void contract_hash_remove(ctid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   552
int lookup_inst_by_contract(ctid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   553
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   554
/* dict.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   555
void dict_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   556
int dict_lookup_byname(const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   557
int dict_insert(const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   558
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   559
/* expand.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   560
int expand_method_tokens(const char *, scf_instance_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   561
    scf_snapshot_t *, int, char **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   562
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   563
/* env.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   564
void init_env(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   565
char **set_smf_env(char **, size_t, const char *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   566
    const restarter_inst_t *, const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   567
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   568
/* file.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   569
int file_ready(graph_vertex_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   570
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   571
/* fork.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   572
int fork_mount(char *, char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   573
void fork_sulogin(boolean_t, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   574
void fork_rc_script(char, const char *, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   575
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   576
void *fork_configd_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   577
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   578
pid_t startd_fork1(int *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   579
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   580
/* graph.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   581
void graph_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   582
void *single_user_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   583
void *graph_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   584
void *graph_event_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   585
void *repository_event_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   586
int dgraph_add_instance(const char *, scf_instance_t *, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   587
void graph_engine_start(void);
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   588
void graph_enable_by_vertex(graph_vertex_t *, int, int);
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   589
int refresh_vertex(graph_vertex_t *, scf_instance_t *);
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   590
void vertex_send_event(graph_vertex_t *, restarter_event_type_t);
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   591
void graph_start_if_satisfied(graph_vertex_t *);
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   592
void vertex_subgraph_dependencies_shutdown(scf_handle_t *h,
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   593
    graph_vertex_t *v, int was_running);
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   594
void graph_transition_sulogin(restarter_instance_state_t,
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   595
    restarter_instance_state_t);
2339
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   596
void graph_transition_propagate(graph_vertex_t *, propagate_event_t,
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   597
    restarter_error_t);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   598
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   599
/* libscf.c - common */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   600
char *inst_fmri_to_svc_fmri(const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   601
void *libscf_object_create(void *(*)(scf_handle_t *), scf_handle_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   602
int libscf_instance_get_fmri(scf_instance_t *, char **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   603
int libscf_fmri_get_instance(scf_handle_t *, const char *, scf_instance_t **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   604
int libscf_lookup_instance(const char *, scf_instance_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   605
int libscf_set_reconfig(int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   606
scf_snapshot_t *libscf_get_or_make_running_snapshot(scf_instance_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   607
    const char *, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   608
int libscf_inst_set_count_prop(scf_instance_t *, const char *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   609
    const char *pgtype, uint32_t, const char *, uint64_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   610
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   611
/* libscf.c - used by graph.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   612
int libscf_get_basic_instance_data(scf_handle_t *, scf_instance_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   613
    const char *, int *, int *, char **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   614
int libscf_inst_get_or_add_pg(scf_instance_t *, const char *, const char *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   615
    uint32_t, scf_propertygroup_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   616
int libscf_read_states(const scf_propertygroup_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   617
    restarter_instance_state_t *, restarter_instance_state_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   618
int depgroup_empty(scf_handle_t *, scf_propertygroup_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   619
gv_type_t depgroup_read_scheme(scf_handle_t *, scf_propertygroup_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   620
depgroup_type_t depgroup_read_grouping(scf_handle_t *, scf_propertygroup_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   621
restarter_error_t depgroup_read_restart(scf_handle_t *, scf_propertygroup_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   622
int libscf_set_enable_ovr(scf_instance_t *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   623
int libscf_inst_delete_prop(scf_instance_t *, const char *, const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   624
int libscf_delete_enable_ovr(scf_instance_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   625
int libscf_get_milestone(scf_instance_t *, scf_property_t *, scf_value_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   626
    char *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   627
int libscf_extract_runlevel(scf_property_t *, char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   628
int libscf_clear_runlevel(scf_propertygroup_t *, const char *milestone);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   629
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   630
typedef int (*callback_t)(void *, void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   631
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   632
int walk_dependency_pgs(scf_instance_t *, callback_t, void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   633
int walk_property_astrings(scf_property_t *, callback_t, void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   634
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   635
/* libscf.c - used by restarter.c/method.c/expand.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   636
char *libscf_get_method(scf_handle_t *, int, restarter_inst_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   637
    scf_snapshot_t *, method_restart_t *, uint_t *, uint8_t *, uint64_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   638
    uint8_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   639
void libscf_populate_graph(scf_handle_t *h);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   640
int update_fault_count(restarter_inst_t *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   641
int libscf_unset_action(scf_handle_t *, scf_propertygroup_t *, admin_action_t,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   642
    int64_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   643
int libscf_get_startd_properties(scf_instance_t *, scf_snapshot_t *, uint_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   644
    char **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   645
int libscf_get_template_values(scf_instance_t *, scf_snapshot_t *, char **,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   646
    char **);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   647
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   648
int libscf_read_method_ids(scf_handle_t *, scf_instance_t *, const char *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   649
    ctid_t *, ctid_t *, pid_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   650
int libscf_write_start_pid(scf_instance_t *, pid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   651
int libscf_write_method_status(scf_instance_t *, const char *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   652
int libscf_note_method_log(scf_instance_t *, const char *, const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   653
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   654
scf_handle_t *libscf_handle_create_bound(scf_version_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   655
void libscf_handle_rebind(scf_handle_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   656
scf_handle_t *libscf_handle_create_bound_loop(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   657
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   658
scf_snapshot_t *libscf_get_running_snapshot(scf_instance_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   659
int libscf_snapshots_poststart(scf_handle_t *, const char *, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   660
int libscf_snapshots_refresh(scf_instance_t *, const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   661
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   662
int instance_is_transient_style(restarter_inst_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   663
int instance_is_wait_style(restarter_inst_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   664
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   665
int libscf_create_self(scf_handle_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   666
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   667
void libscf_reget_instance(restarter_inst_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   668
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   669
/* log.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   670
void log_init();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   671
void log_error(int, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   672
void log_framework(int, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   673
void log_console(int, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   674
void log_preexec(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   675
void setlog(const char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   676
void log_transition(const restarter_inst_t *, start_outcome_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   677
void log_instance(const restarter_inst_t *, boolean_t, const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   678
void log_instance_fmri(const char *, const char *, boolean_t,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   679
    const char *, ...);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   680
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   681
/* method.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   682
void *method_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   683
void method_remove_contract(restarter_inst_t *, boolean_t, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   684
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   685
/* misc.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   686
void startd_close(int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   687
void startd_fclose(FILE *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   688
int fmri_canonify(const char *, char **, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   689
int fs_is_read_only(char *, ulong_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   690
int fs_remount(char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   691
void xstr_sanitize(char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   692
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   693
/* restarter.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   694
void restarter_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   695
void restarter_start(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   696
int instance_in_transition(restarter_inst_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   697
int restarter_instance_update_states(scf_handle_t *, restarter_inst_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   698
    restarter_instance_state_t, restarter_instance_state_t, restarter_error_t,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   699
    char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   700
int stop_instance_fmri(scf_handle_t *, const char *, uint_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   701
restarter_inst_t *inst_lookup_by_id(int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   702
void restarter_mark_pending_snapshot(const char *, uint_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   703
void *restarter_post_fsminimal_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   704
void timeout_insert(restarter_inst_t *, ctid_t, uint64_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   705
void timeout_remove(restarter_inst_t *, ctid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   706
void timeout_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   707
int is_timeout_ovr(restarter_inst_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   708
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   709
/* startd.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   710
void *safe_realloc(void *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   711
char *safe_strdup(const char *s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   712
void *startd_alloc_retry(void *(*)(size_t, int), size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   713
void startd_free(void *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   714
uu_list_pool_t *startd_list_pool_create(const char *, size_t, size_t,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   715
    uu_compare_fn_t *, uint32_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   716
uu_list_t *startd_list_create(uu_list_pool_t *, void *, uint32_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   717
pthread_t startd_thread_create(void *(*)(void *), void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   718
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   719
/* special.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   720
void special_null_transition(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   721
void special_online_hooks_get(const char *, instance_hook_t *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   722
    instance_hook_t *, instance_hook_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   723
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   724
/* transition.c */
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   725
int gt_transition(scf_handle_t *, graph_vertex_t *, restarter_error_t,
2339
73c7b85b6be0 6440500 no login prompt (hang) when filesystem/local fails
lianep
parents: 1958
diff changeset
   726
    restarter_instance_state_t);
1958
886c8ac12ef1 6321540 service failures must go to syslog
lianep
parents: 1712
diff changeset
   727
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   728
/* utmpx.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   729
void utmpx_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   730
void utmpx_clear_old(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   731
int utmpx_mark_init(pid_t, char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   732
void utmpx_mark_dead(pid_t, int, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   733
char utmpx_get_runlevel(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   734
void utmpx_set_runlevel(char, char, boolean_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   735
void utmpx_write_boottime(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   736
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   737
/* wait.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   738
void wait_init(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   739
void wait_prefork(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   740
void wait_postfork(pid_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   741
int wait_register(pid_t, const char *, int, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   742
void *wait_thread(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   743
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   744
/* proc.c */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   745
ctid_t proc_get_ctid();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   746
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   747
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   748
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   749
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   750
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   751
#endif	/* _STARTD_H */