usr/src/lib/libproc/common/proc_names.c
author th199096
Mon, 02 Apr 2007 21:38:04 -0700
changeset 3957 86c9dda5df37
parent 2712 f74a135872bc
child 4574 4e479ec6ce6f
permissions -rw-r--r--
PSARC/2007/052 In-kernel Sharetab 6371468 /etc/dfs/sharetab should be a mntfs style file
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
2712
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
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
/*
3957
86c9dda5df37 PSARC/2007/052 In-kernel Sharetab
th199096
parents: 2712
diff changeset
    22
 * Copyright 2007 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
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#include <stdio.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#define	__EXTENSIONS__
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#include <string.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
#undef  __EXTENSIONS__
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#include <signal.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include <alloca.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <errno.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#include "libproc.h"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
static const char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
rawfltname(int flt)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
	const char *name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
	switch (flt) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
	case FLTILL:	name = "FLTILL";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
	case FLTPRIV:	name = "FLTPRIV";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
	case FLTBPT:	name = "FLTBPT";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
	case FLTTRACE:	name = "FLTTRACE";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
	case FLTACCESS:	name = "FLTACCESS";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
	case FLTBOUNDS:	name = "FLTBOUNDS";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
	case FLTIOVF:	name = "FLTIOVF";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
	case FLTIZDIV:	name = "FLTIZDIV";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
	case FLTFPE:	name = "FLTFPE";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
	case FLTSTACK:	name = "FLTSTACK";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
	case FLTPAGE:	name = "FLTPAGE";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
	case FLTWATCH:	name = "FLTWATCH";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
	case FLTCPCOVF:	name = "FLTCPCOVF";	break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
	default:	name = NULL;		break;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
	return (name);
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
 * Return the name of a fault.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
 * Manufacture a name for unknown fault.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
proc_fltname(int flt, char *buf, size_t bufsz)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
	const char *name = rawfltname(flt);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
	size_t len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
	if (bufsz == 0)		/* force a program failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
	if (name != NULL) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
		len = strlen(name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
		(void) strncpy(buf, name, bufsz);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
		len = snprintf(buf, bufsz, "FLT#%d", flt);
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
	if (len >= bufsz)	/* ensure null-termination */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
		buf[bufsz-1] = '\0';
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
 * Return the name of a signal.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
 * Manufacture a name for unknown signal.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
proc_signame(int sig, char *buf, size_t bufsz)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
	char name[SIG2STR_MAX+4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
	size_t len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
	if (bufsz == 0)		/* force a program failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
	/* sig2str() omits the leading "SIG" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
	(void) strcpy(name, "SIG");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
	if (sig2str(sig, name+3) == 0) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
		len = strlen(name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
		(void) strncpy(buf, name, bufsz);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
		len = snprintf(buf, bufsz, "SIG#%d", sig);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
	if (len >= bufsz)	/* ensure null-termination */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
		buf[bufsz-1] = '\0';
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
static const char *const systable[] = {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
	NULL,			/*  0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
	"_exit",		/*  1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
	"forkall",		/*  2 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
	"read",			/*  3 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
	"write",		/*  4 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
	"open",			/*  5 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
	"close",		/*  6 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
	"wait",			/*  7 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
	"creat",		/*  8 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
	"link",			/*  9 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
	"unlink",		/* 10 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
	"exec",			/* 11 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
	"chdir",		/* 12 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
	"time",			/* 13 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
	"mknod",		/* 14 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
	"chmod",		/* 15 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
	"chown",		/* 16 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
	"brk",			/* 17 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
	"stat",			/* 18 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	"lseek",		/* 19 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
	"getpid",		/* 20 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	"mount",		/* 21 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
	"umount",		/* 22 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	"setuid",		/* 23 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	"getuid",		/* 24 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	"stime",		/* 25 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	"ptrace",		/* 26 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	"alarm",		/* 27 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	"fstat",		/* 28 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
	"pause",		/* 29 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	"utime",		/* 30 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
	"stty",			/* 31 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	"gtty",			/* 32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
	"access",		/* 33 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	"nice",			/* 34 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
	"statfs",		/* 35 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
	"sync",			/* 36 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	"kill",			/* 37 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
	"fstatfs",		/* 38 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
	"pgrpsys",		/* 39 */
2712
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 0
diff changeset
   158
	"uucopystr",		/* 40 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	"dup",			/* 41 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	"pipe",			/* 42 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
	"times",		/* 43 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
	"profil",		/* 44 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
	"plock",		/* 45 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	"setgid",		/* 46 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
	"getgid",		/* 47 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	"signal",		/* 48 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
	"msgsys",		/* 49 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	"sysi86",		/* 50 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
	"acct",			/* 51 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
	"shmsys",		/* 52 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
	"semsys",		/* 53 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	"ioctl",		/* 54 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
	"uadmin",		/* 55 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	NULL,			/* 56 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	"utssys",		/* 57 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
	"fdsync",		/* 58 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
	"execve",		/* 59 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
	"umask",		/* 60 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
	"chroot",		/* 61 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	"fcntl",		/* 62 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
	"ulimit",		/* 63 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
	/* The following 6 entries were reserved for the UNIX PC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	NULL,			/* 64 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	NULL,			/* 65 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	NULL,			/* 66 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
	NULL,			/* 67 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
	NULL,			/* 68 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	NULL,			/* 69 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
	"tasksys",		/* 70 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	"acctctl",		/* 71 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
	"exacctsys",		/* 72 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
	"getpagesizes",		/* 73 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	"rctlsys",		/* 74 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	"issetugid",		/* 75 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
	"fsat",			/* 76 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
	"lwp_park",		/* 77 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
	"sendfilev",		/* 78 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
	"rmdir",		/* 79 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
	"mkdir",		/* 80 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
	"getdents",		/* 81 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
	"privsys",		/* 82 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
	"ucredsys",		/* 83 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
	"sysfs",		/* 84 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
	"getmsg",		/* 85 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
	"putmsg",		/* 86 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
	"poll",			/* 87 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
	"lstat",		/* 88 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
	"symlink",		/* 89 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
	"readlink",		/* 90 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
	"setgroups",		/* 91 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
	"getgroups",		/* 92 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
	"fchmod",		/* 93 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
	"fchown",		/* 94 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
	"sigprocmask",		/* 95 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
	"sigsuspend",		/* 96 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
	"sigaltstack",		/* 97 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
	"sigaction",		/* 98 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	"sigpending",		/* 99 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
	"context",		/* 100 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
	"evsys",		/* 101 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
	"evtrapret",		/* 102 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
	"statvfs",		/* 103 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
	"fstatvfs",		/* 104 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	"getloadavg",		/* 105 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
	"nfssys",		/* 106 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
	"waitid",		/* 107 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
	"sigsendsys",		/* 108 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	"hrtsys",		/* 109 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
	"acancel",		/* 110 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
	"async",		/* 111 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
	"priocntlsys",		/* 112 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
	"pathconf",		/* 113 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
	"mincore",		/* 114 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
	"mmap",			/* 115 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
	"mprotect",		/* 116 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
	"munmap",		/* 117 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	"fpathconf",		/* 118 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
	"vfork",		/* 119 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
	"fchdir",		/* 120 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
	"readv",		/* 121 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
	"writev",		/* 122 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
	"xstat",		/* 123 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
	"lxstat",		/* 124 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
	"fxstat",		/* 125 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
	"xmknod",		/* 126 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
	"NULL",			/* 127 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
	"setrlimit",		/* 128 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
	"getrlimit",		/* 129 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
	"lchown",		/* 130 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
	"memcntl",		/* 131 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
	"getpmsg",		/* 132 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
	"putpmsg",		/* 133 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
	"rename",		/* 134 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
	"uname",		/* 135 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
	"setegid",		/* 136 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
	"sysconfig",		/* 137 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
	"adjtime",		/* 138 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
	"systeminfo",		/* 139 */
3957
86c9dda5df37 PSARC/2007/052 In-kernel Sharetab
th199096
parents: 2712
diff changeset
   261
	"sharefs",		/* 140 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
	"seteuid",		/* 141 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
	NULL,			/* 142 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
	"fork1",		/* 143 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
	"sigtimedwait",		/* 144 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
	"lwp_info",		/* 145 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
	"yield",		/* 146 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
	"lwp_sema_wait",	/* 147 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
	"lwp_sema_post",	/* 148 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
	"lwp_sema_trywait",	/* 149 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
	"lwp_detatch",		/* 150 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
	"corectl",		/* 151 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
	"modctl",		/* 152 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
	"fchroot",		/* 153 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
	"utimes",		/* 154 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
	"vhangup",		/* 155 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
	"gettimeofday",		/* 156 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
	"getitimer",		/* 157 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
	"setitimer",		/* 158 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
	"lwp_create",		/* 159 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
	"lwp_exit",		/* 160 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
	"lwp_suspend",		/* 161 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
	"lwp_continue",		/* 162 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
	"lwp_kill",		/* 163 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
	"lwp_self",		/* 164 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
	"lwp_sigmask",		/* 165 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
	"lwp_private",		/* 166 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
	"lwp_wait",		/* 167 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
	"lwp_mutex_unlock",	/* 168 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
	"lwp_mutex_lock",	/* 169 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
	"lwp_cond_wait",	/* 170 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
	"lwp_cond_signal",	/* 171 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
	"lwp_cond_broadcast",	/* 172 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
	"pread",		/* 173 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
	"pwrite",		/* 174 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
	"llseek",		/* 175 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
	"inst_sync",		/* 176 */
2712
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 0
diff changeset
   298
	"brand",		/* 177 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
	"kaio",			/* 178 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
	"cpc",			/* 179 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
	"lgrpsys",		/* 180 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
	"rusagesys",		/* 181 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
	"portfs",		/* 182 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
	"pollsys",		/* 183 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
	NULL,			/* 184 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
	"acl",			/* 185 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
	"auditsys",		/* 186 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
	"processor_bind",	/* 187 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
	"processor_info",	/* 188 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
	"p_online",		/* 189 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
	"sigqueue",		/* 190 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
	"clock_gettime",	/* 191 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
	"clock_settime",	/* 192 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
	"clock_getres",		/* 193 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
	"timer_create",		/* 194 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
	"timer_delete",		/* 195 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
	"timer_settime",	/* 196 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
	"timer_gettime",	/* 197 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
	"timer_getoverrun",	/* 198 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
	"nanosleep",		/* 199 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
	"facl",			/* 200 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
	"door",			/* 201 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
	"setreuid",		/* 202 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
	"setregid",		/* 203 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
	"install_utrap",	/* 204 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
	"signotify",		/* 205 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
	"schedctl",		/* 206 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
	"pset",			/* 207 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
	"sparc_utrap_install",	/* 208 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	"resolvepath",		/* 209 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
	"lwp_mutex_timedlock",	/* 210 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
	"lwp_sema_timedwait",	/* 211 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
	"lwp_rwlock_sys",	/* 212 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
	"getdents64",		/* 213 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
	"mmap64",		/* 214 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
	"stat64",		/* 215 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
	"lstat64",		/* 216 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
	"fstat64",		/* 217 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
	"statvfs64",		/* 218 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
	"fstatvfs64",		/* 219 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
	"setrlimit64",		/* 220 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
	"getrlimit64",		/* 221 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
	"pread64",		/* 222 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
	"pwrite64",		/* 223 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
	"creat64",		/* 224 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
	"open64",		/* 225 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
	"rpcmod",		/* 226 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
	"zone",			/* 227 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
	"autofssys",		/* 228 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
	"getcwd",		/* 229 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
	"so_socket",		/* 230 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
	"so_socketpair",	/* 231 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
	"bind",			/* 232 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
	"listen",		/* 233 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
	"accept",		/* 234 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
	"connect",		/* 235 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
	"shutdown",		/* 236 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
	"recv",			/* 237 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
	"recvfrom",		/* 238 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
	"recvmsg",		/* 239 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
	"send",			/* 240 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
	"sendmsg",		/* 241 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
	"sendto",		/* 242 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
	"getpeername",		/* 243 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
	"getsockname",		/* 244 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
	"getsockopt",		/* 245 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
	"setsockopt",		/* 246 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
	"sockconfig",		/* 247 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
	"ntp_gettime",		/* 248 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
	"ntp_adjtime",		/* 249 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
	"lwp_mutex_unlock",	/* 250 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
	"lwp_mutex_trylock",	/* 251 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
	"lwp_mutex_init",	/* 252 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
	"cladm",		/* 253 */
2712
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 0
diff changeset
   375
	"uucopy",		/* 254 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
	"umount2"		/* 255 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
/* SYSEND == max syscall number + 1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
#define	SYSEND	(sizeof (systable) / sizeof (systable[0]))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
 * Return the name of a system call.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
 * Manufacture a name for unknown system call.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
proc_sysname(int sys, char *buf, size_t bufsz)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
	const char *name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
	size_t len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
	if (bufsz == 0)		/* force a program failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
	if (sys >= 0 && sys < SYSEND)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
		name = systable[sys];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
	else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
		name = NULL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
	if (name != NULL) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
		len = strlen(name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
		(void) strncpy(buf, name, bufsz);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
		len = snprintf(buf, bufsz, "SYS#%d", sys);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
	if (len >= bufsz)	/* ensure null-termination */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
		buf[bufsz-1] = '\0';
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
 * Convert a string representation of a fault to the corresponding number.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
proc_str2flt(const char *str, int *fltnum)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
	char *next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
	int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
	i = strtol(str, &next, 0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
	if (i > 0 && i <= PRMAXFAULT && *next == '\0') {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
		*fltnum = i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
		return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
	for (i = 1; i <= PRMAXFAULT; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
		const char *s = rawfltname(i);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   431
		if (s && (strcasecmp(s, str) == 0 ||
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
		    strcasecmp(s + 3, str) == 0)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
			*fltnum = i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   434
			return (0);
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
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   438
	return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   439
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   440
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
 * Convert a string representation of a signal to the signal number.  This
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
 * functionality is already available in libc, but the interface doesn't
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
 * optionally accept a "SIG" prefix.  We strip that first, and then call libc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   446
int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   447
proc_str2sig(const char *str, int *signum)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   448
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   449
	if (strncasecmp(str, "SIG", 3) == 0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   450
		str += 3; /* skip prefix */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   451
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   452
	return (str2sig(str, signum));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   453
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   454
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   455
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   456
 * Convert a string representation of a system call to the corresponding number.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   457
 * We do this by performing a simple linear search of the table above.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   458
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   459
int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   460
proc_str2sys(const char *str, int *sysnum)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   461
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   462
	char *next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   463
	int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   464
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   465
	i = strtol(str, &next, 0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   466
	if (i > 0 && i <= PRMAXSYS && *next == '\0') {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   467
		*sysnum = i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   468
		return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   469
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   470
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   471
	for (i = 1; i < SYSEND; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   472
		if (systable[i] != NULL && strcmp(systable[i], str) == 0) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   473
			*sysnum = i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   474
			return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   475
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   476
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   477
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   478
	return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   479
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   480
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   481
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   482
 * Convert a fltset_t to a string representation consisting of canonical
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   483
 * machine fault names separated by the given delimeter string.  If
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   484
 * m is non-zero (TRUE), set members are printed.  If m is zero (FALSE), set
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   485
 * non-members are printed.  If the specified buf is too small to hold the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   486
 * complete formatted set, NULL is returned; otherwise buf is returned.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   487
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   488
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   489
proc_fltset2str(const fltset_t *set, const char *delim, int m,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   490
	char *buf, size_t len)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   491
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   492
	char name[FLT2STR_MAX], *p = buf;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   493
	size_t n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   494
	int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   495
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   496
	if (buf == NULL || len < 1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   497
		errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   498
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   499
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   500
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   501
	buf[0] = '\0';  /* Set first byte to \0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   502
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   503
	for (i = 1; i <= PRMAXFAULT; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   504
		if ((prismember(set, i) != 0) ^ (m == 0)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   505
			(void) proc_fltname(i, name, sizeof (name));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   506
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   507
			if (buf[0] != '\0')
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   508
				n = snprintf(p, len, "%s%s", delim, name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   509
			else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   510
				n = snprintf(p, len, "%s", name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   511
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   512
			if (n != strlen(p)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   513
				errno = ENAMETOOLONG; /* Output was truncated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   514
				return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   515
			}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   516
			len -= n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   517
			p += n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   518
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   519
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   520
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   521
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   522
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   523
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   524
 * Convert a sigset_t to a string representation consisting of canonical signal
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   525
 * names (without the SIG prefix). Parameters and return values analogous to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   526
 * proc_fltset2str().
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   527
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   528
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   529
proc_sigset2str(const sigset_t *set, const char *delim, int m,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   530
	char *buf, size_t len)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   531
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   532
	char name[SIG2STR_MAX], *p = buf;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   533
	size_t n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   534
	int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   535
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   536
	if (buf == NULL || len < 1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   537
		errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   538
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   539
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   540
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   541
	m = (m != 0);	/* Make sure m is 0 or 1 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   542
	buf[0] = '\0';	/* Set first byte to \0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   543
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   544
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   545
	 * Unlike proc_fltset2str() and proc_sysset2str(), we don't loop
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   546
	 * until i <= NSIG here, because sigismember() rejects i == NSIG.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   547
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   548
	for (i = 1; i < NSIG; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   549
		if (sigismember(set, i) == m) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   550
			(void) sig2str(i, name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   551
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   552
			if (buf[0] != '\0')
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   553
				n = snprintf(p, len, "%s%s", delim, name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   554
			else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   555
				n = snprintf(p, len, "%s", name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   556
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   557
			if (n != strlen(p)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   558
				errno = ENAMETOOLONG; /* Output was truncated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   559
				return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   560
			}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   561
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   562
			len -= n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   563
			p += n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   564
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   565
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   566
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   567
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   568
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   569
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   570
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   571
 * Convert a sysset_t to a string representation consisting of canonical system
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   572
 * call names. Parameters and return values analogous to proc_fltset2str().
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   573
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   574
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   575
proc_sysset2str(const sysset_t *set, const char *delim, int m,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   576
	char *buf, size_t len)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   577
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   578
	char name[SYS2STR_MAX], *p = buf;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   579
	size_t n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   580
	int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   581
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   582
	if (buf == NULL || len < 1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   583
		errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   584
		return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   585
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   586
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   587
	buf[0] = '\0';  /* Set first byte to \0 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   588
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   589
	for (i = 1; i <= PRMAXSYS; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   590
		if ((prismember(set, i) != 0) ^ (m == 0)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   591
			(void) proc_sysname(i, name, sizeof (name));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   592
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   593
			if (buf[0] != '\0')
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   594
				n = snprintf(p, len, "%s%s", delim, name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   595
			else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   596
				n = snprintf(p, len, "%s", name);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   597
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   598
			if (n != strlen(p)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   599
				errno = ENAMETOOLONG; /* Output was truncated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   600
				return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   601
			}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   602
			len -= n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   603
			p += n;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   604
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   605
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   606
	return (buf);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   607
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   608
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   609
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   610
 * Convert a string representation of a fault set (names separated by
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   611
 * one or more of the given delimeters) to a fltset_t.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   612
 * If m is non-zero (TRUE), members of the string representation are set.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   613
 * If m is zero (FALSE), non-members of the string representation are set.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   614
 * This function returns NULL for success. Otherwise it returns a pointer
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   615
 * to the token of the string that couldn't be identified as a string
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   616
 * representation of a fault.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   617
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   618
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   619
proc_str2fltset(const char *s, const char *delim, int m, fltset_t *set)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   620
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   621
	char *p, *q, *t = alloca(strlen(s) + 1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   622
	int flt;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   623
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   624
	if (m) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   625
		premptyset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   626
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   627
		prfillset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   628
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   629
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   630
	(void) strcpy(t, s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   631
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   632
	for (p = strtok_r(t, delim, &q); p != NULL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   633
	    p = strtok_r(NULL, delim, &q)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   634
		if (proc_str2flt(p, &flt) == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   635
			errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   636
			return ((char *)s + (p - t));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   637
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   638
		if (m)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   639
			praddset(set, flt);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   640
		else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   641
			prdelset(set, flt);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   642
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   643
	return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   644
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   645
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   646
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   647
 * Convert a string representation of a signal set (names with or without the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   648
 * SIG prefix separated by one or more of the given delimeters) to a sigset_t.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   649
 * Parameters and return values analogous to proc_str2fltset().
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   650
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   651
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   652
proc_str2sigset(const char *s, const char *delim, int m, sigset_t *set)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   653
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   654
	char *p, *q, *t = alloca(strlen(s) + 1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   655
	int sig;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   656
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   657
	if (m) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   658
		premptyset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   659
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   660
		prfillset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   661
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   662
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   663
	(void) strcpy(t, s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   664
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   665
	for (p = strtok_r(t, delim, &q); p != NULL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   666
	    p = strtok_r(NULL, delim, &q)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   667
		if (proc_str2sig(p, &sig) == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   668
			errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   669
			return ((char *)s + (p - t));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   670
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   671
		if (m)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   672
			praddset(set, sig);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   673
		else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   674
			prdelset(set, sig);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   675
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   676
	return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   677
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   678
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   679
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   680
 * Convert a string representation of a system call set (names separated by
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   681
 * one or more of the given delimeters) to a sysset_t. Parameters and return
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   682
 * values analogous to proc_str2fltset().
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   683
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   684
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   685
proc_str2sysset(const char *s, const char *delim, int m, sysset_t *set)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   686
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   687
	char *p, *q, *t = alloca(strlen(s) + 1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   688
	int sys;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   689
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   690
	if (m) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   691
		premptyset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   692
	} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   693
		prfillset(set);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   694
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   695
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   696
	(void) strcpy(t, s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   697
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   698
	for (p = strtok_r(t, delim, &q); p != NULL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   699
	    p = strtok_r(NULL, delim, &q)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   700
		if (proc_str2sys(p, &sys) == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   701
			errno = EINVAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   702
			return ((char *)s + (p - t));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   703
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   704
		if (m)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   705
			praddset(set, sys);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   706
		else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   707
			prdelset(set, sys);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   708
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   709
	return (NULL);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   710
}