/*
 * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *	$Id: syscall1.h,v 1.1.1.1 1999/02/19 00:23:16 wichert Exp $
 */

#define	SOLARIS_syscall	0
#define	SOLARIS_exit	1
#define	SOLARIS_fork	2
#define	SOLARIS_read	3
#define	SOLARIS_write	4
#define	SOLARIS_open	5
#define	SOLARIS_close	6
#define	SOLARIS_wait	7
#define	SOLARIS_creat	8
#define	SOLARIS_link	9
#define	SOLARIS_unlink	10
#define	SOLARIS_exec	11
#define	SOLARIS_chdir	12
#define	SOLARIS_time	13
#define	SOLARIS_mknod	14
#define	SOLARIS_chmod	15
#define	SOLARIS_chown	16
#define	SOLARIS_brk		17
#define	SOLARIS_stat	18
#define	SOLARIS_lseek	19
#define	SOLARIS_getpid	20
#define	SOLARIS_mount	21
#define	SOLARIS_umount	22
#define	SOLARIS_setuid	23
#define	SOLARIS_getuid	24
#define	SOLARIS_stime	25
#define	SOLARIS_ptrace	26
#define	SOLARIS_alarm	27
#define	SOLARIS_fstat	28
#define	SOLARIS_pause	29
#define	SOLARIS_utime	30
#define	SOLARIS_stty	31
#define	SOLARIS_gtty	32
#define	SOLARIS_access	33
#define	SOLARIS_nice	34
#define	SOLARIS_statfs	35
#define	SOLARIS_sync	36
#define	SOLARIS_kill	37
#define	SOLARIS_fstatfs	38
#define	SOLARIS_pgrpsys	39
#define	SOLARIS_xenix	40
#define	SOLARIS_dup		41
#define	SOLARIS_pipe	42
#define	SOLARIS_times	43
#define	SOLARIS_profil	44
#define	SOLARIS_plock	45
#define	SOLARIS_setgid	46
#define	SOLARIS_getgid	47
#define	SOLARIS_signal	48
#define	SOLARIS_msgsys	49
#define	SOLARIS_syssun	50
#define	SOLARIS_acct	51
#define	SOLARIS_shmsys	52
#define	SOLARIS_semsys	53
#define	SOLARIS_ioctl	54
#define	SOLARIS_uadmin	55
#define	SOLARIS_utssys	57
#define	SOLARIS_fdsync	58
#define	SOLARIS_execve	59
#define	SOLARIS_umask	60
#define	SOLARIS_chroot	61
#define	SOLARIS_fcntl	62
#define	SOLARIS_ulimit	63
#define	SOLARIS_rmdir	79
#define	SOLARIS_mkdir	80
#define	SOLARIS_getdents	81
#define	SOLARIS_sysfs	84
#define	SOLARIS_getmsg	85
#define	SOLARIS_putmsg	86
#define	SOLARIS_poll	87
#define	SOLARIS_lstat	88
#define	SOLARIS_symlink	89
#define	SOLARIS_readlink	90
#define	SOLARIS_setgroups	91
#define	SOLARIS_getgroups	92
#define	SOLARIS_fchmod	93
#define	SOLARIS_fchown	94
#define	SOLARIS_sigprocmask	95
#define	SOLARIS_sigsuspend	96
#define	SOLARIS_sigaltstack	97
#define	SOLARIS_sigaction	98
#define	SOLARIS_sigpending	99
#define	SOLARIS_context	100
#define	SOLARIS_evsys	101
#define	SOLARIS_evtrapret	102
#define	SOLARIS_statvfs	103
#define	SOLARIS_fstatvfs	104
#define	SOLARIS_nfssys	106
#define	SOLARIS_waitsys	107
#define	SOLARIS_sigsendsys	108
#define	SOLARIS_hrtsys	109
#define	SOLARIS_acancel	110
#define	SOLARIS_async	111
#define	SOLARIS_priocntlsys	112
#define	SOLARIS_pathconf	113
#define	SOLARIS_mincore	114
#define	SOLARIS_mmap	115
#define	SOLARIS_mprotect	116
#define	SOLARIS_munmap	117
#define	SOLARIS_fpathconf	118
#define	SOLARIS_vfork	119
#define	SOLARIS_fchdir	120
#define	SOLARIS_readv	121
#define	SOLARIS_writev	122
#define	SOLARIS_xstat	123
#define	SOLARIS_lxstat	124
#define	SOLARIS_fxstat	125
#define	SOLARIS_xmknod	126
#define	SOLARIS_clocal	127
#define	SOLARIS_setrlimit	128
#define	SOLARIS_getrlimit	129
#define	SOLARIS_lchown	130
#define	SOLARIS_memcntl	131
#define	SOLARIS_getpmsg	132
#define	SOLARIS_putpmsg	133
#define	SOLARIS_rename	134
#define	SOLARIS_uname	135
#define	SOLARIS_setegid	136
#define	SOLARIS_sysconfig	137
#define	SOLARIS_adjtime	138
#define	SOLARIS_systeminfo	139
#define	SOLARIS_seteuid	141
#define	SOLARIS_vtrace	142
#define	SOLARIS_fork1	143
#define	SOLARIS_sigtimedwait	144
#define	SOLARIS_lwp_info	145
#define	SOLARIS_yield	146
#define	SOLARIS_lwp_sema_wait	147
#define	SOLARIS_lwp_sema_post	148
#define	SOLARIS_modctl	152
#define	SOLARIS_fchroot	153
#define	SOLARIS_utimes	154
#define	SOLARIS_vhangup	155
#define	SOLARIS_gettimeofday	156
#define	SOLARIS_getitimer		157
#define	SOLARIS_setitimer		158
#define	SOLARIS_lwp_create		159
#define	SOLARIS_lwp_exit		160
#define	SOLARIS_lwp_suspend		161
#define	SOLARIS_lwp_continue	162
#define	SOLARIS_lwp_kill		163
#define	SOLARIS_lwp_self		164
#define	SOLARIS_lwp_setprivate	165
#define	SOLARIS_lwp_getprivate	166
#define	SOLARIS_lwp_wait		167
#define	SOLARIS_lwp_mutex_unlock	168
#define	SOLARIS_lwp_mutex_lock	169
#define	SOLARIS_lwp_cond_wait	170
#define	SOLARIS_lwp_cond_signal	171
#define	SOLARIS_lwp_cond_broadcast	172
#define	SOLARIS_pread		173
#define	SOLARIS_pwrite		174
#define	SOLARIS_llseek		175
#define	SOLARIS_inst_sync		176
#define	SOLARIS_kaio		178
#define	SOLARIS_tsolsys		184
#define	SOLARIS_acl			185
#define	SOLARIS_auditsys		186
#define	SOLARIS_processor_bind	187
#define	SOLARIS_processor_info	188
#define	SOLARIS_p_online		189
#define	SOLARIS_sigqueue		190
#define	SOLARIS_clock_gettime	191
#define	SOLARIS_clock_settime	192
#define	SOLARIS_clock_getres	193
#define	SOLARIS_timer_create	194
#define	SOLARIS_timer_delete	195
#define	SOLARIS_timer_settime	196
#define	SOLARIS_timer_gettime	197
#define	SOLARIS_timer_getoverrun	198
#define	SOLARIS_nanosleep		199
#define	SOLARIS_facl		200
#define	SOLARIS_door		201
#define	SOLARIS_setreuid		202
#define	SOLARIS_setregid		203
#define	SOLARIS_signotifywait	210
#define	SOLARIS_lwp_sigredirect	211
#define	SOLARIS_lwp_alarm		212

#include "dummy2.h"

extern int solaris_syscall();
extern int solaris_exit();
extern int solaris_fork();
extern int solaris_read();
extern int solaris_write();
extern int solaris_open();
extern int solaris_close();
extern int solaris_wait();
extern int solaris_creat();
extern int solaris_link();
extern int solaris_unlink();
extern int solaris_exec();
extern int solaris_chdir();
extern int solaris_time();
extern int solaris_mknod();
extern int solaris_chmod();
extern int solaris_chown();
extern int solaris_brk();
extern int solaris_stat();
extern int solaris_lseek();
extern int solaris_getpid();
extern int solaris_mount();
extern int solaris_umount();
extern int solaris_setuid();
extern int solaris_getuid();
extern int solaris_stime();
extern int solaris_ptrace();
extern int solaris_alarm();
extern int solaris_fstat();
extern int solaris_pause();
extern int solaris_utime();
extern int solaris_stty();
extern int solaris_gtty();
extern int solaris_access();
extern int solaris_nice();
extern int solaris_statfs();
extern int solaris_sync();
extern int solaris_kill();
extern int solaris_fstatfs();
extern int solaris_pgrpsys();
extern int solaris_setpgrp();
extern int solaris_xenix();
extern int solaris_syssgi();
extern int solaris_dup();
extern int solaris_pipe();
extern int solaris_times();
extern int solaris_profil();
extern int solaris_plock();
extern int solaris_setgid();
extern int solaris_getgid();
extern int solaris_sigcall();
extern int solaris_msgsys();
extern int solaris_syssun();
extern int solaris_sysi86();
extern int solaris_sysmips();
extern int solaris_sysmachine();
extern int solaris_acct();
extern int solaris_shmsys();
extern int solaris_semsys();
extern int solaris_ioctl();
extern int solaris_uadmin();
extern int solaris_utssys();
extern int solaris_fdsync();
extern int solaris_execve();
extern int solaris_umask();
extern int solaris_chroot();
extern int solaris_fcntl();
extern int solaris_ulimit();
extern int solaris_rmdir();
extern int solaris_mkdir();
extern int solaris_getdents();
extern int solaris_sysfs();
extern int solaris_getmsg();
extern int solaris_putmsg();
extern int solaris_poll();
extern int solaris_lstat();
extern int solaris_symlink();
extern int solaris_readlink();
extern int solaris_setgroups();
extern int solaris_getgroups();
extern int solaris_fchmod();
extern int solaris_fchown();
extern int solaris_sigprocmask();
extern int solaris_sigsuspend();
extern int solaris_sigaltstack();
extern int solaris_sigaction();
extern int solaris_spcall();
extern int solaris_context();
extern int solaris_evsys();
extern int solaris_evtrapret();
extern int solaris_statvfs();
extern int solaris_fstatvfs();
extern int solaris_nfssys();
extern int solaris_waitid();
extern int solaris_sigsendsys();
extern int solaris_hrtsys();
extern int solaris_acancel();
extern int solaris_async();
extern int solaris_priocntlsys();
extern int solaris_pathconf();
extern int solaris_mincore();
extern int solaris_mmap();
extern int solaris_mprotect();
extern int solaris_munmap();
extern int solaris_fpathconf();
extern int solaris_vfork();
extern int solaris_fchdir();
extern int solaris_readv();
extern int solaris_writev();
extern int solaris_xstat();
extern int solaris_lxstat();
extern int solaris_fxstat();
extern int solaris_xmknod();
extern int solaris_clocal();
extern int solaris_setrlimit();
extern int solaris_getrlimit();
extern int solaris_lchown();
extern int solaris_memcntl();
extern int solaris_getpmsg();
extern int solaris_putpmsg();
extern int solaris_rename();
extern int solaris_uname();
extern int solaris_setegid();
extern int solaris_sysconfig();
extern int solaris_adjtime();
extern int solaris_sysinfo();
extern int solaris_seteuid();
extern int solaris_vtrace();
extern int solaris_fork1();
extern int solaris_sigtimedwait();
extern int solaris_lwp_info();
extern int solaris_yield();
extern int solaris_lwp_sema_wait();
extern int solaris_lwp_sema_post();
extern int solaris_modctl();
extern int solaris_fchroot();
extern int solaris_utimes();
extern int solaris_vhangup();
extern int solaris_gettimeofday();
extern int solaris_getitimer();
extern int solaris_setitimer();
extern int solaris_lwp_create();
extern int solaris_lwp_exit();
extern int solaris_lwp_suspend();
extern int solaris_lwp_continue();
extern int solaris_lwp_kill();
extern int solaris_lwp_self();
extern int solaris_lwp_setprivate();
extern int solaris_lwp_getprivate();
extern int solaris_lwp_wait();
extern int solaris_lwp_mutex_unlock();
extern int solaris_lwp_mutex_lock();
extern int solaris_lwp_cond_wait();
extern int solaris_lwp_cond_signal();
extern int solaris_lwp_cond_broadcast();
extern int solaris_pread();
extern int solaris_pwrite();
extern int solaris_llseek();
extern int solaris_inst_sync();
extern int solaris_auditsys();
extern int solaris_processor_bind();
extern int solaris_processor_info();
extern int solaris_p_online();
extern int solaris_sigqueue();
extern int solaris_clock_gettime();
extern int solaris_clock_settime();
extern int solaris_clock_getres();
extern int solaris_timer_create();
extern int solaris_timer_delete();
extern int solaris_timer_settime();
extern int solaris_timer_gettime();
extern int solaris_timer_getoverrun();
extern int solaris_nanosleep();

/* solaris_pgrpsys subcalls */

extern int solaris_getpgrp(), solaris_setpgrp(), solaris_getsid();
extern int solaris_setsid(), solaris_getpgid(), solaris_setpgid();

#define SOLARIS_pgrpsys_subcall	300
#define SOLARIS_getpgrp		(SOLARIS_pgrpsys_subcall + 0)
#define SOLARIS_setpgrp		(SOLARIS_pgrpsys_subcall + 1)
#define SOLARIS_getsid		(SOLARIS_pgrpsys_subcall + 2)
#define SOLARIS_setsid		(SOLARIS_pgrpsys_subcall + 3)
#define SOLARIS_getpgid		(SOLARIS_pgrpsys_subcall + 4)
#define SOLARIS_setpgid		(SOLARIS_pgrpsys_subcall + 5)

#define SOLARIS_pgrpsys_nsubcalls	6

/* solaris_sigcall subcalls */

#undef SOLARIS_signal
#define SOLARIS_sigcall		48

extern int solaris_signal(), solaris_sigset(), solaris_sighold();
extern int solaris_sigrelse(), solaris_sigignore(), solaris_sigpause();

#define SOLARIS_sigcall_subcall	310
#define SOLARIS_signal		(SOLARIS_sigcall_subcall + 0)
#define SOLARIS_sigset		(SOLARIS_sigcall_subcall + 1)
#define SOLARIS_sighold		(SOLARIS_sigcall_subcall + 2)
#define SOLARIS_sigrelse		(SOLARIS_sigcall_subcall + 3)
#define SOLARIS_sigignore		(SOLARIS_sigcall_subcall + 4)
#define SOLARIS_sigpause		(SOLARIS_sigcall_subcall + 5)

#define SOLARIS_sigcall_nsubcalls	6

/* msgsys subcalls */

extern int solaris_msgget(), solaris_msgctl(), solaris_msgrcv(), solaris_msgsnd();

#define SOLARIS_msgsys_subcall	320
#define SOLARIS_msgget		(SOLARIS_msgsys_subcall + 0)
#define SOLARIS_msgctl		(SOLARIS_msgsys_subcall + 1)
#define SOLARIS_msgrcv		(SOLARIS_msgsys_subcall + 2)
#define SOLARIS_msgsnd		(SOLARIS_msgsys_subcall + 3)

#define SOLARIS_msgsys_nsubcalls	4

/* shmsys subcalls */

extern int solaris_shmat(), solaris_shmctl(), solaris_shmdt(), solaris_shmget();

#define SOLARIS_shmsys_subcall	330
#define SOLARIS_shmat		(SOLARIS_shmsys_subcall + 0)
#define SOLARIS_shmctl		(SOLARIS_shmsys_subcall + 1)
#define SOLARIS_shmdt		(SOLARIS_shmsys_subcall + 2)
#define SOLARIS_shmget		(SOLARIS_shmsys_subcall + 3)

#define SOLARIS_shmsys_nsubcalls	4

/* semsys subcalls */

extern int solaris_semctl(), solaris_semget(), solaris_semop();

#define SOLARIS_semsys_subcall	340
#define SOLARIS_semctl		(SOLARIS_semsys_subcall + 0)
#define SOLARIS_semget		(SOLARIS_semsys_subcall + 1)
#define SOLARIS_semop		(SOLARIS_semsys_subcall + 2)

#define SOLARIS_semsys_nsubcalls	3

/* utssys subcalls */

extern int solaris_olduname(), solaris_ustat(), solaris_fusers();

#define SOLARIS_utssys_subcall	350

#define SOLARIS_olduname		(SOLARIS_utssys_subcall + 0)
				/* 1 is unused */
#define SOLARIS_ustat		(SOLARIS_utssys_subcall + 2)
#define SOLARIS_fusers		(SOLARIS_utssys_subcall + 3)

#define SOLARIS_utssys_nsubcalls	4

/* sysfs subcalls */

extern int solaris_sysfs1(), solaris_sysfs2(), solaris_sysfs3();

#define SOLARIS_sysfs_subcall	360
				/* 0 is unused */
#define SOLARIS_sysfs1		(SOLARIS_sysfs_subcall + 1)
#define SOLARIS_sysfs2		(SOLARIS_sysfs_subcall + 2)
#define SOLARIS_sysfs3		(SOLARIS_sysfs_subcall + 3)

#define SOLARIS_sysfs_nsubcalls	4

/* solaris_spcall subcalls */

#undef SOLARIS_sigpending
#define SOLARIS_spcall		99

extern int solaris_sigpending(), solaris_sigfillset();

#define SOLARIS_spcall_subcall	370
				/* 0 is unused */
#define SOLARIS_sigpending		(SOLARIS_spcall_subcall + 1)
#define SOLARIS_sigfillset		(SOLARIS_spcall_subcall + 2)

#define SOLARIS_spcall_nsubcalls	3

/* solaris_context subcalls */

extern int solaris_getcontext(), solaris_setcontext();

#define SOLARIS_context_subcall	380
#define SOLARIS_getcontext		(SOLARIS_context_subcall + 0)
#define SOLARIS_setcontext		(SOLARIS_context_subcall + 1)

#define SOLARIS_context_nsubcalls	2

