freebsd-nq/sys/kern/systrace_args.c

8200 lines
128 KiB
C
Raw Normal View History

/*
* System call argument to DTrace register array converstion.
*
* DO NOT EDIT-- this file is automatically generated.
* $FreeBSD$
* This file is part of the DTrace syscall provider.
*/
static void
systrace_args(int sysnum, void *params, u_int64_t *uarg, int *n_args)
{
int64_t *iarg = (int64_t *) uarg;
switch (sysnum) {
/* nosys */
case 0: {
*n_args = 0;
break;
}
/* sys_exit */
case 1: {
struct sys_exit_args *p = params;
iarg[0] = p->rval; /* int */
*n_args = 1;
break;
}
/* fork */
case 2: {
*n_args = 0;
break;
}
/* read */
case 3: {
struct read_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* void * */
uarg[2] = p->nbyte; /* size_t */
*n_args = 3;
break;
}
/* write */
case 4: {
struct write_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* const void * */
uarg[2] = p->nbyte; /* size_t */
*n_args = 3;
break;
}
/* open */
case 5: {
struct open_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->flags; /* int */
iarg[2] = p->mode; /* int */
*n_args = 3;
break;
}
/* close */
case 6: {
struct close_args *p = params;
iarg[0] = p->fd; /* int */
*n_args = 1;
break;
}
/* wait4 */
case 7: {
struct wait_args *p = params;
iarg[0] = p->pid; /* int */
uarg[1] = (intptr_t) p->status; /* int * */
iarg[2] = p->options; /* int */
uarg[3] = (intptr_t) p->rusage; /* struct rusage * */
*n_args = 4;
break;
}
/* link */
case 9: {
struct link_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->link; /* char * */
*n_args = 2;
break;
}
/* unlink */
case 10: {
struct unlink_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* chdir */
case 12: {
struct chdir_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* fchdir */
case 13: {
struct fchdir_args *p = params;
iarg[0] = p->fd; /* int */
*n_args = 1;
break;
}
/* mknod */
case 14: {
struct mknod_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->mode; /* int */
iarg[2] = p->dev; /* int */
*n_args = 3;
break;
}
/* chmod */
case 15: {
struct chmod_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->mode; /* int */
*n_args = 2;
break;
}
/* chown */
case 16: {
struct chown_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->uid; /* int */
iarg[2] = p->gid; /* int */
*n_args = 3;
break;
}
/* obreak */
case 17: {
struct obreak_args *p = params;
uarg[0] = (intptr_t) p->nsize; /* char * */
*n_args = 1;
break;
}
/* getpid */
case 20: {
*n_args = 0;
break;
}
/* mount */
case 21: {
struct mount_args *p = params;
uarg[0] = (intptr_t) p->type; /* char * */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->flags; /* int */
uarg[3] = (intptr_t) p->data; /* caddr_t */
*n_args = 4;
break;
}
/* unmount */
case 22: {
struct unmount_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* setuid */
case 23: {
struct setuid_args *p = params;
uarg[0] = p->uid; /* uid_t */
*n_args = 1;
break;
}
/* getuid */
case 24: {
*n_args = 0;
break;
}
/* geteuid */
case 25: {
*n_args = 0;
break;
}
/* ptrace */
case 26: {
struct ptrace_args *p = params;
iarg[0] = p->req; /* int */
iarg[1] = p->pid; /* pid_t */
uarg[2] = (intptr_t) p->addr; /* caddr_t */
iarg[3] = p->data; /* int */
*n_args = 4;
break;
}
/* recvmsg */
case 27: {
struct recvmsg_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->msg; /* struct msghdr * */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* sendmsg */
case 28: {
struct sendmsg_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->msg; /* struct msghdr * */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* recvfrom */
case 29: {
struct recvfrom_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->buf; /* caddr_t */
uarg[2] = p->len; /* size_t */
iarg[3] = p->flags; /* int */
uarg[4] = (intptr_t) p->from; /* struct sockaddr *__restrict */
uarg[5] = (intptr_t) p->fromlenaddr; /* __socklen_t *__restrict */
*n_args = 6;
break;
}
/* accept */
case 30: {
struct accept_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->name; /* struct sockaddr *__restrict */
uarg[2] = (intptr_t) p->anamelen; /* __socklen_t *__restrict */
*n_args = 3;
break;
}
/* getpeername */
case 31: {
struct getpeername_args *p = params;
iarg[0] = p->fdes; /* int */
uarg[1] = (intptr_t) p->asa; /* struct sockaddr *__restrict */
uarg[2] = (intptr_t) p->alen; /* __socklen_t *__restrict */
*n_args = 3;
break;
}
/* getsockname */
case 32: {
struct getsockname_args *p = params;
iarg[0] = p->fdes; /* int */
uarg[1] = (intptr_t) p->asa; /* struct sockaddr *__restrict */
uarg[2] = (intptr_t) p->alen; /* __socklen_t *__restrict */
*n_args = 3;
break;
}
/* access */
case 33: {
struct access_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* chflags */
case 34: {
struct chflags_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* fchflags */
case 35: {
struct fchflags_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* sync */
case 36: {
*n_args = 0;
break;
}
/* kill */
case 37: {
struct kill_args *p = params;
iarg[0] = p->pid; /* int */
iarg[1] = p->signum; /* int */
*n_args = 2;
break;
}
/* getppid */
case 39: {
*n_args = 0;
break;
}
/* dup */
case 41: {
struct dup_args *p = params;
uarg[0] = p->fd; /* u_int */
*n_args = 1;
break;
}
/* pipe */
case 42: {
*n_args = 0;
break;
}
/* getegid */
case 43: {
*n_args = 0;
break;
}
/* profil */
case 44: {
struct profil_args *p = params;
uarg[0] = (intptr_t) p->samples; /* caddr_t */
uarg[1] = p->size; /* size_t */
uarg[2] = p->offset; /* size_t */
uarg[3] = p->scale; /* u_int */
*n_args = 4;
break;
}
/* ktrace */
case 45: {
struct ktrace_args *p = params;
uarg[0] = (intptr_t) p->fname; /* const char * */
iarg[1] = p->ops; /* int */
iarg[2] = p->facs; /* int */
iarg[3] = p->pid; /* int */
*n_args = 4;
break;
}
/* getgid */
case 47: {
*n_args = 0;
break;
}
/* getlogin */
case 49: {
struct getlogin_args *p = params;
uarg[0] = (intptr_t) p->namebuf; /* char * */
uarg[1] = p->namelen; /* u_int */
*n_args = 2;
break;
}
/* setlogin */
case 50: {
struct setlogin_args *p = params;
uarg[0] = (intptr_t) p->namebuf; /* char * */
*n_args = 1;
break;
}
/* acct */
case 51: {
struct acct_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* sigaltstack */
case 53: {
struct sigaltstack_args *p = params;
uarg[0] = (intptr_t) p->ss; /* stack_t * */
uarg[1] = (intptr_t) p->oss; /* stack_t * */
*n_args = 2;
break;
}
/* ioctl */
case 54: {
struct ioctl_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = p->com; /* u_long */
uarg[2] = (intptr_t) p->data; /* caddr_t */
*n_args = 3;
break;
}
/* reboot */
case 55: {
struct reboot_args *p = params;
iarg[0] = p->opt; /* int */
*n_args = 1;
break;
}
/* revoke */
case 56: {
struct revoke_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* symlink */
case 57: {
struct symlink_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->link; /* char * */
*n_args = 2;
break;
}
/* readlink */
case 58: {
struct readlink_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->buf; /* char * */
2008-02-12 20:11:54 +00:00
uarg[2] = p->count; /* size_t */
*n_args = 3;
break;
}
/* execve */
case 59: {
struct execve_args *p = params;
uarg[0] = (intptr_t) p->fname; /* char * */
uarg[1] = (intptr_t) p->argv; /* char ** */
uarg[2] = (intptr_t) p->envv; /* char ** */
*n_args = 3;
break;
}
/* umask */
case 60: {
struct umask_args *p = params;
iarg[0] = p->newmask; /* int */
*n_args = 1;
break;
}
/* chroot */
case 61: {
struct chroot_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* msync */
case 65: {
struct msync_args *p = params;
uarg[0] = (intptr_t) p->addr; /* void * */
uarg[1] = p->len; /* size_t */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* vfork */
case 66: {
*n_args = 0;
break;
}
/* sbrk */
case 69: {
struct sbrk_args *p = params;
iarg[0] = p->incr; /* int */
*n_args = 1;
break;
}
/* sstk */
case 70: {
struct sstk_args *p = params;
iarg[0] = p->incr; /* int */
*n_args = 1;
break;
}
/* ovadvise */
case 72: {
struct ovadvise_args *p = params;
iarg[0] = p->anom; /* int */
*n_args = 1;
break;
}
/* munmap */
case 73: {
struct munmap_args *p = params;
uarg[0] = (intptr_t) p->addr; /* void * */
uarg[1] = p->len; /* size_t */
*n_args = 2;
break;
}
/* mprotect */
case 74: {
struct mprotect_args *p = params;
uarg[0] = (intptr_t) p->addr; /* const void * */
uarg[1] = p->len; /* size_t */
iarg[2] = p->prot; /* int */
*n_args = 3;
break;
}
/* madvise */
case 75: {
struct madvise_args *p = params;
uarg[0] = (intptr_t) p->addr; /* void * */
uarg[1] = p->len; /* size_t */
iarg[2] = p->behav; /* int */
*n_args = 3;
break;
}
/* mincore */
case 78: {
struct mincore_args *p = params;
uarg[0] = (intptr_t) p->addr; /* const void * */
uarg[1] = p->len; /* size_t */
uarg[2] = (intptr_t) p->vec; /* char * */
*n_args = 3;
break;
}
/* getgroups */
case 79: {
struct getgroups_args *p = params;
uarg[0] = p->gidsetsize; /* u_int */
uarg[1] = (intptr_t) p->gidset; /* gid_t * */
*n_args = 2;
break;
}
/* setgroups */
case 80: {
struct setgroups_args *p = params;
uarg[0] = p->gidsetsize; /* u_int */
uarg[1] = (intptr_t) p->gidset; /* gid_t * */
*n_args = 2;
break;
}
/* getpgrp */
case 81: {
*n_args = 0;
break;
}
/* setpgid */
case 82: {
struct setpgid_args *p = params;
iarg[0] = p->pid; /* int */
iarg[1] = p->pgid; /* int */
*n_args = 2;
break;
}
/* setitimer */
case 83: {
struct setitimer_args *p = params;
uarg[0] = p->which; /* u_int */
uarg[1] = (intptr_t) p->itv; /* struct itimerval * */
uarg[2] = (intptr_t) p->oitv; /* struct itimerval * */
*n_args = 3;
break;
}
/* swapon */
case 85: {
struct swapon_args *p = params;
uarg[0] = (intptr_t) p->name; /* char * */
*n_args = 1;
break;
}
/* getitimer */
case 86: {
struct getitimer_args *p = params;
uarg[0] = p->which; /* u_int */
uarg[1] = (intptr_t) p->itv; /* struct itimerval * */
*n_args = 2;
break;
}
/* getdtablesize */
case 89: {
*n_args = 0;
break;
}
/* dup2 */
case 90: {
struct dup2_args *p = params;
uarg[0] = p->from; /* u_int */
uarg[1] = p->to; /* u_int */
*n_args = 2;
break;
}
/* fcntl */
case 92: {
struct fcntl_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->cmd; /* int */
iarg[2] = p->arg; /* long */
*n_args = 3;
break;
}
/* select */
case 93: {
struct select_args *p = params;
iarg[0] = p->nd; /* int */
uarg[1] = (intptr_t) p->in; /* fd_set * */
uarg[2] = (intptr_t) p->ou; /* fd_set * */
uarg[3] = (intptr_t) p->ex; /* fd_set * */
uarg[4] = (intptr_t) p->tv; /* struct timeval * */
*n_args = 5;
break;
}
/* fsync */
case 95: {
struct fsync_args *p = params;
iarg[0] = p->fd; /* int */
*n_args = 1;
break;
}
/* setpriority */
case 96: {
struct setpriority_args *p = params;
iarg[0] = p->which; /* int */
iarg[1] = p->who; /* int */
iarg[2] = p->prio; /* int */
*n_args = 3;
break;
}
/* socket */
case 97: {
struct socket_args *p = params;
iarg[0] = p->domain; /* int */
iarg[1] = p->type; /* int */
iarg[2] = p->protocol; /* int */
*n_args = 3;
break;
}
/* connect */
case 98: {
struct connect_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->name; /* caddr_t */
iarg[2] = p->namelen; /* int */
*n_args = 3;
break;
}
/* getpriority */
case 100: {
struct getpriority_args *p = params;
iarg[0] = p->which; /* int */
iarg[1] = p->who; /* int */
*n_args = 2;
break;
}
/* bind */
case 104: {
struct bind_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->name; /* caddr_t */
iarg[2] = p->namelen; /* int */
*n_args = 3;
break;
}
/* setsockopt */
case 105: {
struct setsockopt_args *p = params;
iarg[0] = p->s; /* int */
iarg[1] = p->level; /* int */
iarg[2] = p->name; /* int */
uarg[3] = (intptr_t) p->val; /* caddr_t */
iarg[4] = p->valsize; /* int */
*n_args = 5;
break;
}
/* listen */
case 106: {
struct listen_args *p = params;
iarg[0] = p->s; /* int */
iarg[1] = p->backlog; /* int */
*n_args = 2;
break;
}
/* gettimeofday */
case 116: {
struct gettimeofday_args *p = params;
uarg[0] = (intptr_t) p->tp; /* struct timeval * */
uarg[1] = (intptr_t) p->tzp; /* struct timezone * */
*n_args = 2;
break;
}
/* getrusage */
case 117: {
struct getrusage_args *p = params;
iarg[0] = p->who; /* int */
uarg[1] = (intptr_t) p->rusage; /* struct rusage * */
*n_args = 2;
break;
}
/* getsockopt */
case 118: {
struct getsockopt_args *p = params;
iarg[0] = p->s; /* int */
iarg[1] = p->level; /* int */
iarg[2] = p->name; /* int */
uarg[3] = (intptr_t) p->val; /* caddr_t */
uarg[4] = (intptr_t) p->avalsize; /* int * */
*n_args = 5;
break;
}
/* readv */
case 120: {
struct readv_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->iovp; /* struct iovec * */
uarg[2] = p->iovcnt; /* u_int */
*n_args = 3;
break;
}
/* writev */
case 121: {
struct writev_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->iovp; /* struct iovec * */
uarg[2] = p->iovcnt; /* u_int */
*n_args = 3;
break;
}
/* settimeofday */
case 122: {
struct settimeofday_args *p = params;
uarg[0] = (intptr_t) p->tv; /* struct timeval * */
uarg[1] = (intptr_t) p->tzp; /* struct timezone * */
*n_args = 2;
break;
}
/* fchown */
case 123: {
struct fchown_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->uid; /* int */
iarg[2] = p->gid; /* int */
*n_args = 3;
break;
}
/* fchmod */
case 124: {
struct fchmod_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->mode; /* int */
*n_args = 2;
break;
}
/* setreuid */
case 126: {
struct setreuid_args *p = params;
iarg[0] = p->ruid; /* int */
iarg[1] = p->euid; /* int */
*n_args = 2;
break;
}
/* setregid */
case 127: {
struct setregid_args *p = params;
iarg[0] = p->rgid; /* int */
iarg[1] = p->egid; /* int */
*n_args = 2;
break;
}
/* rename */
case 128: {
struct rename_args *p = params;
uarg[0] = (intptr_t) p->from; /* char * */
uarg[1] = (intptr_t) p->to; /* char * */
*n_args = 2;
break;
}
/* flock */
case 131: {
struct flock_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->how; /* int */
*n_args = 2;
break;
}
/* mkfifo */
case 132: {
struct mkfifo_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->mode; /* int */
*n_args = 2;
break;
}
/* sendto */
case 133: {
struct sendto_args *p = params;
iarg[0] = p->s; /* int */
uarg[1] = (intptr_t) p->buf; /* caddr_t */
uarg[2] = p->len; /* size_t */
iarg[3] = p->flags; /* int */
uarg[4] = (intptr_t) p->to; /* caddr_t */
iarg[5] = p->tolen; /* int */
*n_args = 6;
break;
}
/* shutdown */
case 134: {
struct shutdown_args *p = params;
iarg[0] = p->s; /* int */
iarg[1] = p->how; /* int */
*n_args = 2;
break;
}
/* socketpair */
case 135: {
struct socketpair_args *p = params;
iarg[0] = p->domain; /* int */
iarg[1] = p->type; /* int */
iarg[2] = p->protocol; /* int */
uarg[3] = (intptr_t) p->rsv; /* int * */
*n_args = 4;
break;
}
/* mkdir */
case 136: {
struct mkdir_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->mode; /* int */
*n_args = 2;
break;
}
/* rmdir */
case 137: {
struct rmdir_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* utimes */
case 138: {
struct utimes_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->tptr; /* struct timeval * */
*n_args = 2;
break;
}
/* adjtime */
case 140: {
struct adjtime_args *p = params;
uarg[0] = (intptr_t) p->delta; /* struct timeval * */
uarg[1] = (intptr_t) p->olddelta; /* struct timeval * */
*n_args = 2;
break;
}
/* setsid */
case 147: {
*n_args = 0;
break;
}
/* quotactl */
case 148: {
struct quotactl_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->cmd; /* int */
iarg[2] = p->uid; /* int */
uarg[3] = (intptr_t) p->arg; /* caddr_t */
*n_args = 4;
break;
}
2008-03-26 15:24:02 +00:00
/* nlm_syscall */
case 154: {
struct nlm_syscall_args *p = params;
iarg[0] = p->debug_level; /* int */
iarg[1] = p->grace_period; /* int */
iarg[2] = p->addr_count; /* int */
uarg[3] = (intptr_t) p->addrs; /* char ** */
*n_args = 4;
break;
}
/* nfssvc */
case 155: {
struct nfssvc_args *p = params;
iarg[0] = p->flag; /* int */
uarg[1] = (intptr_t) p->argp; /* caddr_t */
*n_args = 2;
break;
}
/* lgetfh */
case 160: {
struct lgetfh_args *p = params;
uarg[0] = (intptr_t) p->fname; /* char * */
uarg[1] = (intptr_t) p->fhp; /* struct fhandle * */
*n_args = 2;
break;
}
/* getfh */
case 161: {
struct getfh_args *p = params;
uarg[0] = (intptr_t) p->fname; /* char * */
uarg[1] = (intptr_t) p->fhp; /* struct fhandle * */
*n_args = 2;
break;
}
/* sysarch */
case 165: {
struct sysarch_args *p = params;
iarg[0] = p->op; /* int */
uarg[1] = (intptr_t) p->parms; /* char * */
*n_args = 2;
break;
}
/* rtprio */
case 166: {
struct rtprio_args *p = params;
iarg[0] = p->function; /* int */
iarg[1] = p->pid; /* pid_t */
uarg[2] = (intptr_t) p->rtp; /* struct rtprio * */
*n_args = 3;
break;
}
/* semsys */
case 169: {
struct semsys_args *p = params;
iarg[0] = p->which; /* int */
iarg[1] = p->a2; /* int */
iarg[2] = p->a3; /* int */
iarg[3] = p->a4; /* int */
iarg[4] = p->a5; /* int */
*n_args = 5;
break;
}
/* msgsys */
case 170: {
struct msgsys_args *p = params;
iarg[0] = p->which; /* int */
iarg[1] = p->a2; /* int */
iarg[2] = p->a3; /* int */
iarg[3] = p->a4; /* int */
iarg[4] = p->a5; /* int */
iarg[5] = p->a6; /* int */
*n_args = 6;
break;
}
/* shmsys */
case 171: {
struct shmsys_args *p = params;
iarg[0] = p->which; /* int */
iarg[1] = p->a2; /* int */
iarg[2] = p->a3; /* int */
iarg[3] = p->a4; /* int */
*n_args = 4;
break;
}
/* freebsd6_pread */
case 173: {
struct freebsd6_pread_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* void * */
uarg[2] = p->nbyte; /* size_t */
iarg[3] = p->pad; /* int */
iarg[4] = p->offset; /* off_t */
*n_args = 5;
break;
}
/* freebsd6_pwrite */
case 174: {
struct freebsd6_pwrite_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* const void * */
uarg[2] = p->nbyte; /* size_t */
iarg[3] = p->pad; /* int */
iarg[4] = p->offset; /* off_t */
*n_args = 5;
break;
}
Add code to allow the system to handle multiple routing tables. This particular implementation is designed to be fully backwards compatible and to be MFC-able to 7.x (and 6.x) Currently the only protocol that can make use of the multiple tables is IPv4 Similar functionality exists in OpenBSD and Linux. From my notes: ----- One thing where FreeBSD has been falling behind, and which by chance I have some time to work on is "policy based routing", which allows different packet streams to be routed by more than just the destination address. Constraints: ------------ I want to make some form of this available in the 6.x tree (and by extension 7.x) , but FreeBSD in general needs it so I might as well do it in -current and back port the portions I need. One of the ways that this can be done is to have the ability to instantiate multiple kernel routing tables (which I will now refer to as "Forwarding Information Bases" or "FIBs" for political correctness reasons). Which FIB a particular packet uses to make the next hop decision can be decided by a number of mechanisms. The policies these mechanisms implement are the "Policies" referred to in "Policy based routing". One of the constraints I have if I try to back port this work to 6.x is that it must be implemented as a EXTENSION to the existing ABIs in 6.x so that third party applications do not need to be recompiled in timespan of the branch. This first version will not have some of the bells and whistles that will come with later versions. It will, for example, be limited to 16 tables in the first commit. Implementation method, Compatible version. (part 1) ------------------------------- For this reason I have implemented a "sufficient subset" of a multiple routing table solution in Perforce, and back-ported it to 6.x. (also in Perforce though not always caught up with what I have done in -current/P4). The subset allows a number of FIBs to be defined at compile time (8 is sufficient for my purposes in 6.x) and implements the changes needed to allow IPV4 to use them. I have not done the changes for ipv6 simply because I do not need it, and I do not have enough knowledge of ipv6 (e.g. neighbor discovery) needed to do it. Other protocol families are left untouched and should there be users with proprietary protocol families, they should continue to work and be oblivious to the existence of the extra FIBs. To understand how this is done, one must know that the current FIB code starts everything off with a single dimensional array of pointers to FIB head structures (One per protocol family), each of which in turn points to the trie of routes available to that family. The basic change in the ABI compatible version of the change is to extent that array to be a 2 dimensional array, so that instead of protocol family X looking at rt_tables[X] for the table it needs, it looks at rt_tables[Y][X] when for all protocol families except ipv4 Y is always 0. Code that is unaware of the change always just sees the first row of the table, which of course looks just like the one dimensional array that existed before. The entry points rtrequest(), rtalloc(), rtalloc1(), rtalloc_ign() are all maintained, but refer only to the first row of the array, so that existing callers in proprietary protocols can continue to do the "right thing". Some new entry points are added, for the exclusive use of ipv4 code called in_rtrequest(), in_rtalloc(), in_rtalloc1() and in_rtalloc_ign(), which have an extra argument which refers the code to the correct row. In addition, there are some new entry points (currently called rtalloc_fib() and friends) that check the Address family being looked up and call either rtalloc() (and friends) if the protocol is not IPv4 forcing the action to row 0 or to the appropriate row if it IS IPv4 (and that info is available). These are for calling from code that is not specific to any particular protocol. The way these are implemented would change in the non ABI preserving code to be added later. One feature of the first version of the code is that for ipv4, the interface routes show up automatically on all the FIBs, so that no matter what FIB you select you always have the basic direct attached hosts available to you. (rtinit() does this automatically). You CAN delete an interface route from one FIB should you want to but by default it's there. ARP information is also available in each FIB. It's assumed that the same machine would have the same MAC address, regardless of which FIB you are using to get to it. This brings us as to how the correct FIB is selected for an outgoing IPV4 packet. Firstly, all packets have a FIB associated with them. if nothing has been done to change it, it will be FIB 0. The FIB is changed in the following ways. Packets fall into one of a number of classes. 1/ locally generated packets, coming from a socket/PCB. Such packets select a FIB from a number associated with the socket/PCB. This in turn is inherited from the process, but can be changed by a socket option. The process in turn inherits it on fork. I have written a utility call setfib that acts a bit like nice.. setfib -3 ping target.example.com # will use fib 3 for ping. It is an obvious extension to make it a property of a jail but I have not done so. It can be achieved by combining the setfib and jail commands. 2/ packets received on an interface for forwarding. By default these packets would use table 0, (or possibly a number settable in a sysctl(not yet)). but prior to routing the firewall can inspect them (see below). (possibly in the future you may be able to associate a FIB with packets received on an interface.. An ifconfig arg, but not yet.) 3/ packets inspected by a packet classifier, which can arbitrarily associate a fib with it on a packet by packet basis. A fib assigned to a packet by a packet classifier (such as ipfw) would over-ride a fib associated by a more default source. (such as cases 1 or 2). 4/ a tcp listen socket associated with a fib will generate accept sockets that are associated with that same fib. 5/ Packets generated in response to some other packet (e.g. reset or icmp packets). These should use the FIB associated with the packet being reponded to. 6/ Packets generated during encapsulation. gif, tun and other tunnel interfaces will encapsulate using the FIB that was in effect withthe proces that set up the tunnel. thus setfib 1 ifconfig gif0 [tunnel instructions] will set the fib for the tunnel to use to be fib 1. Routing messages would be associated with their process, and thus select one FIB or another. messages from the kernel would be associated with the fib they refer to and would only be received by a routing socket associated with that fib. (not yet implemented) In addition Netstat has been edited to be able to cope with the fact that the array is now 2 dimensional. (It looks in system memory using libkvm (!)). Old versions of netstat see only the first FIB. In addition two sysctls are added to give: a) the number of FIBs compiled in (active) b) the default FIB of the calling process. Early testing experience: ------------------------- Basically our (IronPort's) appliance does this functionality already using ipfw fwd but that method has some drawbacks. For example, It can't fully simulate a routing table because it can't influence the socket's choice of local address when a connect() is done. Testing during the generating of these changes has been remarkably smooth so far. Multiple tables have co-existed with no notable side effects, and packets have been routes accordingly. ipfw has grown 2 new keywords: setfib N ip from anay to any count ip from any to any fib N In pf there seems to be a requirement to be able to give symbolic names to the fibs but I do not have that capacity. I am not sure if it is required. SCTP has interestingly enough built in support for this, called VRFs in Cisco parlance. it will be interesting to see how that handles it when it suddenly actually does something. Where to next: -------------------- After committing the ABI compatible version and MFCing it, I'd like to proceed in a forward direction in -current. this will result in some roto-tilling in the routing code. Firstly: the current code's idea of having a separate tree per protocol family, all of the same format, and pointed to by the 1 dimensional array is a bit silly. Especially when one considers that there is code that makes assumptions about every protocol having the same internal structures there. Some protocols don't WANT that sort of structure. (for example the whole idea of a netmask is foreign to appletalk). This needs to be made opaque to the external code. My suggested first change is to add routing method pointers to the 'domain' structure, along with information pointing the data. instead of having an array of pointers to uniform structures, there would be an array pointing to the 'domain' structures for each protocol address domain (protocol family), and the methods this reached would be called. The methods would have an argument that gives FIB number, but the protocol would be free to ignore it. When the ABI can be changed it raises the possibilty of the addition of a fib entry into the "struct route". Currently, the structure contains the sockaddr of the desination, and the resulting fib entry. To make this work fully, one could add a fib number so that given an address and a fib, one can find the third element, the fib entry. Interaction with the ARP layer/ LL layer would need to be revisited as well. Qing Li has been working on this already. This work was sponsored by Ironport Systems/Cisco Reviewed by: several including rwatson, bz and mlair (parts each) Obtained from: Ironport systems/Cisco
2008-05-09 23:03:00 +00:00
/* setfib */
case 175: {
struct setfib_args *p = params;
iarg[0] = p->fibnum; /* int */
*n_args = 1;
break;
}
/* ntp_adjtime */
case 176: {
struct ntp_adjtime_args *p = params;
uarg[0] = (intptr_t) p->tp; /* struct timex * */
*n_args = 1;
break;
}
/* setgid */
case 181: {
struct setgid_args *p = params;
iarg[0] = p->gid; /* gid_t */
*n_args = 1;
break;
}
/* setegid */
case 182: {
struct setegid_args *p = params;
iarg[0] = p->egid; /* gid_t */
*n_args = 1;
break;
}
/* seteuid */
case 183: {
struct seteuid_args *p = params;
uarg[0] = p->euid; /* uid_t */
*n_args = 1;
break;
}
/* stat */
case 188: {
struct stat_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->ub; /* struct stat * */
*n_args = 2;
break;
}
/* fstat */
case 189: {
struct fstat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->sb; /* struct stat * */
*n_args = 2;
break;
}
/* lstat */
case 190: {
struct lstat_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->ub; /* struct stat * */
*n_args = 2;
break;
}
/* pathconf */
case 191: {
struct pathconf_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->name; /* int */
*n_args = 2;
break;
}
/* fpathconf */
case 192: {
struct fpathconf_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->name; /* int */
*n_args = 2;
break;
}
/* getrlimit */
case 194: {
struct __getrlimit_args *p = params;
uarg[0] = p->which; /* u_int */
uarg[1] = (intptr_t) p->rlp; /* struct rlimit * */
*n_args = 2;
break;
}
/* setrlimit */
case 195: {
struct __setrlimit_args *p = params;
uarg[0] = p->which; /* u_int */
uarg[1] = (intptr_t) p->rlp; /* struct rlimit * */
*n_args = 2;
break;
}
/* getdirentries */
case 196: {
struct getdirentries_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* char * */
uarg[2] = p->count; /* u_int */
uarg[3] = (intptr_t) p->basep; /* long * */
*n_args = 4;
break;
}
/* freebsd6_mmap */
case 197: {
struct freebsd6_mmap_args *p = params;
uarg[0] = (intptr_t) p->addr; /* caddr_t */
uarg[1] = p->len; /* size_t */
iarg[2] = p->prot; /* int */
iarg[3] = p->flags; /* int */
iarg[4] = p->fd; /* int */
iarg[5] = p->pad; /* int */
iarg[6] = p->pos; /* off_t */
*n_args = 7;
break;
}
/* nosys */
case 198: {
*n_args = 0;
break;
}
/* freebsd6_lseek */
case 199: {
struct freebsd6_lseek_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->pad; /* int */
iarg[2] = p->offset; /* off_t */
iarg[3] = p->whence; /* int */
*n_args = 4;
break;
}
/* freebsd6_truncate */
case 200: {
struct freebsd6_truncate_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->pad; /* int */
iarg[2] = p->length; /* off_t */
*n_args = 3;
break;
}
/* freebsd6_ftruncate */
case 201: {
struct freebsd6_ftruncate_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->pad; /* int */
iarg[2] = p->length; /* off_t */
*n_args = 3;
break;
}
/* __sysctl */
case 202: {
struct sysctl_args *p = params;
uarg[0] = (intptr_t) p->name; /* int * */
uarg[1] = p->namelen; /* u_int */
uarg[2] = (intptr_t) p->old; /* void * */
uarg[3] = (intptr_t) p->oldlenp; /* size_t * */
uarg[4] = (intptr_t) p->new; /* void * */
uarg[5] = p->newlen; /* size_t */
*n_args = 6;
break;
}
/* mlock */
case 203: {
struct mlock_args *p = params;
uarg[0] = (intptr_t) p->addr; /* const void * */
uarg[1] = p->len; /* size_t */
*n_args = 2;
break;
}
/* munlock */
case 204: {
struct munlock_args *p = params;
uarg[0] = (intptr_t) p->addr; /* const void * */
uarg[1] = p->len; /* size_t */
*n_args = 2;
break;
}
/* undelete */
case 205: {
struct undelete_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* futimes */
case 206: {
struct futimes_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->tptr; /* struct timeval * */
*n_args = 2;
break;
}
/* getpgid */
case 207: {
struct getpgid_args *p = params;
iarg[0] = p->pid; /* pid_t */
*n_args = 1;
break;
}
/* poll */
case 209: {
struct poll_args *p = params;
uarg[0] = (intptr_t) p->fds; /* struct pollfd * */
uarg[1] = p->nfds; /* u_int */
iarg[2] = p->timeout; /* int */
*n_args = 3;
break;
}
/* lkmnosys */
case 210: {
*n_args = 0;
break;
}
/* lkmnosys */
case 211: {
*n_args = 0;
break;
}
/* lkmnosys */
case 212: {
*n_args = 0;
break;
}
/* lkmnosys */
case 213: {
*n_args = 0;
break;
}
/* lkmnosys */
case 214: {
*n_args = 0;
break;
}
/* lkmnosys */
case 215: {
*n_args = 0;
break;
}
/* lkmnosys */
case 216: {
*n_args = 0;
break;
}
/* lkmnosys */
case 217: {
*n_args = 0;
break;
}
/* lkmnosys */
case 218: {
*n_args = 0;
break;
}
/* lkmnosys */
case 219: {
*n_args = 0;
break;
}
/* semget */
case 221: {
struct semget_args *p = params;
iarg[0] = p->key; /* key_t */
iarg[1] = p->nsems; /* int */
iarg[2] = p->semflg; /* int */
*n_args = 3;
break;
}
/* semop */
case 222: {
struct semop_args *p = params;
iarg[0] = p->semid; /* int */
uarg[1] = (intptr_t) p->sops; /* struct sembuf * */
uarg[2] = p->nsops; /* size_t */
*n_args = 3;
break;
}
/* msgget */
case 225: {
struct msgget_args *p = params;
iarg[0] = p->key; /* key_t */
iarg[1] = p->msgflg; /* int */
*n_args = 2;
break;
}
/* msgsnd */
case 226: {
struct msgsnd_args *p = params;
iarg[0] = p->msqid; /* int */
uarg[1] = (intptr_t) p->msgp; /* const void * */
uarg[2] = p->msgsz; /* size_t */
iarg[3] = p->msgflg; /* int */
*n_args = 4;
break;
}
/* msgrcv */
case 227: {
struct msgrcv_args *p = params;
iarg[0] = p->msqid; /* int */
uarg[1] = (intptr_t) p->msgp; /* void * */
uarg[2] = p->msgsz; /* size_t */
iarg[3] = p->msgtyp; /* long */
iarg[4] = p->msgflg; /* int */
*n_args = 5;
break;
}
/* shmat */
case 228: {
struct shmat_args *p = params;
iarg[0] = p->shmid; /* int */
uarg[1] = (intptr_t) p->shmaddr; /* const void * */
iarg[2] = p->shmflg; /* int */
*n_args = 3;
break;
}
/* shmdt */
case 230: {
struct shmdt_args *p = params;
uarg[0] = (intptr_t) p->shmaddr; /* const void * */
*n_args = 1;
break;
}
/* shmget */
case 231: {
struct shmget_args *p = params;
iarg[0] = p->key; /* key_t */
uarg[1] = p->size; /* size_t */
iarg[2] = p->shmflg; /* int */
*n_args = 3;
break;
}
/* clock_gettime */
case 232: {
struct clock_gettime_args *p = params;
iarg[0] = p->clock_id; /* clockid_t */
uarg[1] = (intptr_t) p->tp; /* struct timespec * */
*n_args = 2;
break;
}
/* clock_settime */
case 233: {
struct clock_settime_args *p = params;
iarg[0] = p->clock_id; /* clockid_t */
uarg[1] = (intptr_t) p->tp; /* const struct timespec * */
*n_args = 2;
break;
}
/* clock_getres */
case 234: {
struct clock_getres_args *p = params;
iarg[0] = p->clock_id; /* clockid_t */
uarg[1] = (intptr_t) p->tp; /* struct timespec * */
*n_args = 2;
break;
}
/* ktimer_create */
case 235: {
struct ktimer_create_args *p = params;
iarg[0] = p->clock_id; /* clockid_t */
uarg[1] = (intptr_t) p->evp; /* struct sigevent * */
uarg[2] = (intptr_t) p->timerid; /* int * */
*n_args = 3;
break;
}
/* ktimer_delete */
case 236: {
struct ktimer_delete_args *p = params;
iarg[0] = p->timerid; /* int */
*n_args = 1;
break;
}
/* ktimer_settime */
case 237: {
struct ktimer_settime_args *p = params;
iarg[0] = p->timerid; /* int */
iarg[1] = p->flags; /* int */
uarg[2] = (intptr_t) p->value; /* const struct itimerspec * */
uarg[3] = (intptr_t) p->ovalue; /* struct itimerspec * */
*n_args = 4;
break;
}
/* ktimer_gettime */
case 238: {
struct ktimer_gettime_args *p = params;
iarg[0] = p->timerid; /* int */
uarg[1] = (intptr_t) p->value; /* struct itimerspec * */
*n_args = 2;
break;
}
/* ktimer_getoverrun */
case 239: {
struct ktimer_getoverrun_args *p = params;
iarg[0] = p->timerid; /* int */
*n_args = 1;
break;
}
/* nanosleep */
case 240: {
struct nanosleep_args *p = params;
uarg[0] = (intptr_t) p->rqtp; /* const struct timespec * */
uarg[1] = (intptr_t) p->rmtp; /* struct timespec * */
*n_args = 2;
break;
}
/* ntp_gettime */
case 248: {
struct ntp_gettime_args *p = params;
uarg[0] = (intptr_t) p->ntvp; /* struct ntptimeval * */
*n_args = 1;
break;
}
/* minherit */
case 250: {
struct minherit_args *p = params;
uarg[0] = (intptr_t) p->addr; /* void * */
uarg[1] = p->len; /* size_t */
iarg[2] = p->inherit; /* int */
*n_args = 3;
break;
}
/* rfork */
case 251: {
struct rfork_args *p = params;
iarg[0] = p->flags; /* int */
*n_args = 1;
break;
}
/* openbsd_poll */
case 252: {
struct openbsd_poll_args *p = params;
uarg[0] = (intptr_t) p->fds; /* struct pollfd * */
uarg[1] = p->nfds; /* u_int */
iarg[2] = p->timeout; /* int */
*n_args = 3;
break;
}
/* issetugid */
case 253: {
*n_args = 0;
break;
}
/* lchown */
case 254: {
struct lchown_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->uid; /* int */
iarg[2] = p->gid; /* int */
*n_args = 3;
break;
}
/* aio_read */
case 255: {
struct aio_read_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 1;
break;
}
/* aio_write */
case 256: {
struct aio_write_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 1;
break;
}
/* lio_listio */
case 257: {
struct lio_listio_args *p = params;
iarg[0] = p->mode; /* int */
uarg[1] = (intptr_t) p->acb_list; /* struct aiocb *const * */
iarg[2] = p->nent; /* int */
uarg[3] = (intptr_t) p->sig; /* struct sigevent * */
*n_args = 4;
break;
}
/* getdents */
case 272: {
struct getdents_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* char * */
uarg[2] = p->count; /* size_t */
*n_args = 3;
break;
}
/* lchmod */
case 274: {
struct lchmod_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->mode; /* mode_t */
*n_args = 2;
break;
}
/* lchown */
case 275: {
struct lchown_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = p->uid; /* uid_t */
iarg[2] = p->gid; /* gid_t */
*n_args = 3;
break;
}
/* lutimes */
case 276: {
struct lutimes_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->tptr; /* struct timeval * */
*n_args = 2;
break;
}
/* msync */
case 277: {
struct msync_args *p = params;
uarg[0] = (intptr_t) p->addr; /* void * */
uarg[1] = p->len; /* size_t */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* nstat */
case 278: {
struct nstat_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->ub; /* struct nstat * */
*n_args = 2;
break;
}
/* nfstat */
case 279: {
struct nfstat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->sb; /* struct nstat * */
*n_args = 2;
break;
}
/* nlstat */
case 280: {
struct nlstat_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->ub; /* struct nstat * */
*n_args = 2;
break;
}
/* preadv */
case 289: {
struct preadv_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->iovp; /* struct iovec * */
uarg[2] = p->iovcnt; /* u_int */
iarg[3] = p->offset; /* off_t */
*n_args = 4;
break;
}
/* pwritev */
case 290: {
struct pwritev_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->iovp; /* struct iovec * */
uarg[2] = p->iovcnt; /* u_int */
iarg[3] = p->offset; /* off_t */
*n_args = 4;
break;
}
/* fhopen */
case 298: {
struct fhopen_args *p = params;
uarg[0] = (intptr_t) p->u_fhp; /* const struct fhandle * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* fhstat */
case 299: {
struct fhstat_args *p = params;
uarg[0] = (intptr_t) p->u_fhp; /* const struct fhandle * */
uarg[1] = (intptr_t) p->sb; /* struct stat * */
*n_args = 2;
break;
}
/* modnext */
case 300: {
struct modnext_args *p = params;
iarg[0] = p->modid; /* int */
*n_args = 1;
break;
}
/* modstat */
case 301: {
struct modstat_args *p = params;
iarg[0] = p->modid; /* int */
uarg[1] = (intptr_t) p->stat; /* struct module_stat * */
*n_args = 2;
break;
}
/* modfnext */
case 302: {
struct modfnext_args *p = params;
iarg[0] = p->modid; /* int */
*n_args = 1;
break;
}
/* modfind */
case 303: {
struct modfind_args *p = params;
uarg[0] = (intptr_t) p->name; /* const char * */
*n_args = 1;
break;
}
/* kldload */
case 304: {
struct kldload_args *p = params;
uarg[0] = (intptr_t) p->file; /* const char * */
*n_args = 1;
break;
}
/* kldunload */
case 305: {
struct kldunload_args *p = params;
iarg[0] = p->fileid; /* int */
*n_args = 1;
break;
}
/* kldfind */
case 306: {
struct kldfind_args *p = params;
uarg[0] = (intptr_t) p->file; /* const char * */
*n_args = 1;
break;
}
/* kldnext */
case 307: {
struct kldnext_args *p = params;
iarg[0] = p->fileid; /* int */
*n_args = 1;
break;
}
/* kldstat */
case 308: {
struct kldstat_args *p = params;
iarg[0] = p->fileid; /* int */
uarg[1] = (intptr_t) p->stat; /* struct kld_file_stat * */
*n_args = 2;
break;
}
/* kldfirstmod */
case 309: {
struct kldfirstmod_args *p = params;
iarg[0] = p->fileid; /* int */
*n_args = 1;
break;
}
/* getsid */
case 310: {
struct getsid_args *p = params;
iarg[0] = p->pid; /* pid_t */
*n_args = 1;
break;
}
/* setresuid */
case 311: {
struct setresuid_args *p = params;
uarg[0] = p->ruid; /* uid_t */
uarg[1] = p->euid; /* uid_t */
uarg[2] = p->suid; /* uid_t */
*n_args = 3;
break;
}
/* setresgid */
case 312: {
struct setresgid_args *p = params;
iarg[0] = p->rgid; /* gid_t */
iarg[1] = p->egid; /* gid_t */
iarg[2] = p->sgid; /* gid_t */
*n_args = 3;
break;
}
/* aio_return */
case 314: {
struct aio_return_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 1;
break;
}
/* aio_suspend */
case 315: {
struct aio_suspend_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb *const * */
iarg[1] = p->nent; /* int */
uarg[2] = (intptr_t) p->timeout; /* const struct timespec * */
*n_args = 3;
break;
}
/* aio_cancel */
case 316: {
struct aio_cancel_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 2;
break;
}
/* aio_error */
case 317: {
struct aio_error_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 1;
break;
}
/* oaio_read */
case 318: {
struct oaio_read_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct oaiocb * */
*n_args = 1;
break;
}
/* oaio_write */
case 319: {
struct oaio_write_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct oaiocb * */
*n_args = 1;
break;
}
/* olio_listio */
case 320: {
struct olio_listio_args *p = params;
iarg[0] = p->mode; /* int */
uarg[1] = (intptr_t) p->acb_list; /* struct oaiocb *const * */
iarg[2] = p->nent; /* int */
uarg[3] = (intptr_t) p->sig; /* struct osigevent * */
*n_args = 4;
break;
}
/* yield */
case 321: {
*n_args = 0;
break;
}
/* mlockall */
case 324: {
struct mlockall_args *p = params;
iarg[0] = p->how; /* int */
*n_args = 1;
break;
}
/* munlockall */
case 325: {
*n_args = 0;
break;
}
/* __getcwd */
case 326: {
struct __getcwd_args *p = params;
uarg[0] = (intptr_t) p->buf; /* u_char * */
uarg[1] = p->buflen; /* u_int */
*n_args = 2;
break;
}
/* sched_setparam */
case 327: {
struct sched_setparam_args *p = params;
iarg[0] = p->pid; /* pid_t */
uarg[1] = (intptr_t) p->param; /* const struct sched_param * */
*n_args = 2;
break;
}
/* sched_getparam */
case 328: {
struct sched_getparam_args *p = params;
iarg[0] = p->pid; /* pid_t */
uarg[1] = (intptr_t) p->param; /* struct sched_param * */
*n_args = 2;
break;
}
/* sched_setscheduler */
case 329: {
struct sched_setscheduler_args *p = params;
iarg[0] = p->pid; /* pid_t */
iarg[1] = p->policy; /* int */
uarg[2] = (intptr_t) p->param; /* const struct sched_param * */
*n_args = 3;
break;
}
/* sched_getscheduler */
case 330: {
struct sched_getscheduler_args *p = params;
iarg[0] = p->pid; /* pid_t */
*n_args = 1;
break;
}
/* sched_yield */
case 331: {
*n_args = 0;
break;
}
/* sched_get_priority_max */
case 332: {
struct sched_get_priority_max_args *p = params;
iarg[0] = p->policy; /* int */
*n_args = 1;
break;
}
/* sched_get_priority_min */
case 333: {
struct sched_get_priority_min_args *p = params;
iarg[0] = p->policy; /* int */
*n_args = 1;
break;
}
/* sched_rr_get_interval */
case 334: {
struct sched_rr_get_interval_args *p = params;
iarg[0] = p->pid; /* pid_t */
uarg[1] = (intptr_t) p->interval; /* struct timespec * */
*n_args = 2;
break;
}
/* utrace */
case 335: {
struct utrace_args *p = params;
uarg[0] = (intptr_t) p->addr; /* const void * */
uarg[1] = p->len; /* size_t */
*n_args = 2;
break;
}
/* kldsym */
case 337: {
struct kldsym_args *p = params;
iarg[0] = p->fileid; /* int */
iarg[1] = p->cmd; /* int */
uarg[2] = (intptr_t) p->data; /* void * */
*n_args = 3;
break;
}
/* jail */
case 338: {
struct jail_args *p = params;
uarg[0] = (intptr_t) p->jail; /* struct jail * */
*n_args = 1;
break;
}
/* sigprocmask */
case 340: {
struct sigprocmask_args *p = params;
iarg[0] = p->how; /* int */
uarg[1] = (intptr_t) p->set; /* const sigset_t * */
uarg[2] = (intptr_t) p->oset; /* sigset_t * */
*n_args = 3;
break;
}
/* sigsuspend */
case 341: {
struct sigsuspend_args *p = params;
uarg[0] = (intptr_t) p->sigmask; /* const sigset_t * */
*n_args = 1;
break;
}
/* sigpending */
case 343: {
struct sigpending_args *p = params;
uarg[0] = (intptr_t) p->set; /* sigset_t * */
*n_args = 1;
break;
}
/* sigtimedwait */
case 345: {
struct sigtimedwait_args *p = params;
uarg[0] = (intptr_t) p->set; /* const sigset_t * */
uarg[1] = (intptr_t) p->info; /* siginfo_t * */
uarg[2] = (intptr_t) p->timeout; /* const struct timespec * */
*n_args = 3;
break;
}
/* sigwaitinfo */
case 346: {
struct sigwaitinfo_args *p = params;
uarg[0] = (intptr_t) p->set; /* const sigset_t * */
uarg[1] = (intptr_t) p->info; /* siginfo_t * */
*n_args = 2;
break;
}
/* __acl_get_file */
case 347: {
struct __acl_get_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_set_file */
case 348: {
struct __acl_set_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_get_fd */
case 349: {
struct __acl_get_fd_args *p = params;
iarg[0] = p->filedes; /* int */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_set_fd */
case 350: {
struct __acl_set_fd_args *p = params;
iarg[0] = p->filedes; /* int */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_delete_file */
case 351: {
struct __acl_delete_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
*n_args = 2;
break;
}
/* __acl_delete_fd */
case 352: {
struct __acl_delete_fd_args *p = params;
iarg[0] = p->filedes; /* int */
iarg[1] = p->type; /* acl_type_t */
*n_args = 2;
break;
}
/* __acl_aclcheck_file */
case 353: {
struct __acl_aclcheck_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_aclcheck_fd */
case 354: {
struct __acl_aclcheck_fd_args *p = params;
iarg[0] = p->filedes; /* int */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* extattrctl */
case 355: {
struct extattrctl_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->cmd; /* int */
uarg[2] = (intptr_t) p->filename; /* const char * */
iarg[3] = p->attrnamespace; /* int */
uarg[4] = (intptr_t) p->attrname; /* const char * */
*n_args = 5;
break;
}
/* extattr_set_file */
case 356: {
struct extattr_set_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_get_file */
case 357: {
struct extattr_get_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_delete_file */
case 358: {
struct extattr_delete_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
*n_args = 3;
break;
}
/* aio_waitcomplete */
case 359: {
struct aio_waitcomplete_args *p = params;
uarg[0] = (intptr_t) p->aiocbp; /* struct aiocb ** */
uarg[1] = (intptr_t) p->timeout; /* struct timespec * */
*n_args = 2;
break;
}
/* getresuid */
case 360: {
struct getresuid_args *p = params;
uarg[0] = (intptr_t) p->ruid; /* uid_t * */
uarg[1] = (intptr_t) p->euid; /* uid_t * */
uarg[2] = (intptr_t) p->suid; /* uid_t * */
*n_args = 3;
break;
}
/* getresgid */
case 361: {
struct getresgid_args *p = params;
uarg[0] = (intptr_t) p->rgid; /* gid_t * */
uarg[1] = (intptr_t) p->egid; /* gid_t * */
uarg[2] = (intptr_t) p->sgid; /* gid_t * */
*n_args = 3;
break;
}
/* kqueue */
case 362: {
*n_args = 0;
break;
}
/* kevent */
case 363: {
struct kevent_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->changelist; /* struct kevent * */
iarg[2] = p->nchanges; /* int */
uarg[3] = (intptr_t) p->eventlist; /* struct kevent * */
iarg[4] = p->nevents; /* int */
uarg[5] = (intptr_t) p->timeout; /* const struct timespec * */
*n_args = 6;
break;
}
/* extattr_set_fd */
case 371: {
struct extattr_set_fd_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_get_fd */
case 372: {
struct extattr_get_fd_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_delete_fd */
case 373: {
struct extattr_delete_fd_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
*n_args = 3;
break;
}
/* __setugid */
case 374: {
struct __setugid_args *p = params;
iarg[0] = p->flag; /* int */
*n_args = 1;
break;
}
/* eaccess */
case 376: {
struct eaccess_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* nmount */
case 378: {
struct nmount_args *p = params;
uarg[0] = (intptr_t) p->iovp; /* struct iovec * */
uarg[1] = p->iovcnt; /* unsigned int */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* __mac_get_proc */
case 384: {
struct __mac_get_proc_args *p = params;
uarg[0] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 1;
break;
}
/* __mac_set_proc */
case 385: {
struct __mac_set_proc_args *p = params;
uarg[0] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 1;
break;
}
/* __mac_get_fd */
case 386: {
struct __mac_get_fd_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* __mac_get_file */
case 387: {
struct __mac_get_file_args *p = params;
uarg[0] = (intptr_t) p->path_p; /* const char * */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* __mac_set_fd */
case 388: {
struct __mac_set_fd_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* __mac_set_file */
case 389: {
struct __mac_set_file_args *p = params;
uarg[0] = (intptr_t) p->path_p; /* const char * */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* kenv */
case 390: {
struct kenv_args *p = params;
iarg[0] = p->what; /* int */
uarg[1] = (intptr_t) p->name; /* const char * */
uarg[2] = (intptr_t) p->value; /* char * */
iarg[3] = p->len; /* int */
*n_args = 4;
break;
}
/* lchflags */
case 391: {
struct lchflags_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* uuidgen */
case 392: {
struct uuidgen_args *p = params;
uarg[0] = (intptr_t) p->store; /* struct uuid * */
iarg[1] = p->count; /* int */
*n_args = 2;
break;
}
/* sendfile */
case 393: {
struct sendfile_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->s; /* int */
iarg[2] = p->offset; /* off_t */
uarg[3] = p->nbytes; /* size_t */
uarg[4] = (intptr_t) p->hdtr; /* struct sf_hdtr * */
uarg[5] = (intptr_t) p->sbytes; /* off_t * */
iarg[6] = p->flags; /* int */
*n_args = 7;
break;
}
/* mac_syscall */
case 394: {
struct mac_syscall_args *p = params;
uarg[0] = (intptr_t) p->policy; /* const char * */
iarg[1] = p->call; /* int */
uarg[2] = (intptr_t) p->arg; /* void * */
*n_args = 3;
break;
}
/* getfsstat */
case 395: {
struct getfsstat_args *p = params;
uarg[0] = (intptr_t) p->buf; /* struct statfs * */
iarg[1] = p->bufsize; /* long */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* statfs */
case 396: {
struct statfs_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
uarg[1] = (intptr_t) p->buf; /* struct statfs * */
*n_args = 2;
break;
}
/* fstatfs */
case 397: {
struct fstatfs_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* struct statfs * */
*n_args = 2;
break;
}
/* fhstatfs */
case 398: {
struct fhstatfs_args *p = params;
uarg[0] = (intptr_t) p->u_fhp; /* const struct fhandle * */
uarg[1] = (intptr_t) p->buf; /* struct statfs * */
*n_args = 2;
break;
}
/* ksem_close */
case 400: {
struct ksem_close_args *p = params;
iarg[0] = p->id; /* semid_t */
*n_args = 1;
break;
}
/* ksem_post */
case 401: {
struct ksem_post_args *p = params;
iarg[0] = p->id; /* semid_t */
*n_args = 1;
break;
}
/* ksem_wait */
case 402: {
struct ksem_wait_args *p = params;
iarg[0] = p->id; /* semid_t */
*n_args = 1;
break;
}
/* ksem_trywait */
case 403: {
struct ksem_trywait_args *p = params;
iarg[0] = p->id; /* semid_t */
*n_args = 1;
break;
}
/* ksem_init */
case 404: {
struct ksem_init_args *p = params;
uarg[0] = (intptr_t) p->idp; /* semid_t * */
uarg[1] = p->value; /* unsigned int */
*n_args = 2;
break;
}
/* ksem_open */
case 405: {
struct ksem_open_args *p = params;
uarg[0] = (intptr_t) p->idp; /* semid_t * */
uarg[1] = (intptr_t) p->name; /* const char * */
iarg[2] = p->oflag; /* int */
iarg[3] = p->mode; /* mode_t */
uarg[4] = p->value; /* unsigned int */
*n_args = 5;
break;
}
/* ksem_unlink */
case 406: {
struct ksem_unlink_args *p = params;
uarg[0] = (intptr_t) p->name; /* const char * */
*n_args = 1;
break;
}
/* ksem_getvalue */
case 407: {
struct ksem_getvalue_args *p = params;
iarg[0] = p->id; /* semid_t */
uarg[1] = (intptr_t) p->val; /* int * */
*n_args = 2;
break;
}
/* ksem_destroy */
case 408: {
struct ksem_destroy_args *p = params;
iarg[0] = p->id; /* semid_t */
*n_args = 1;
break;
}
/* __mac_get_pid */
case 409: {
struct __mac_get_pid_args *p = params;
iarg[0] = p->pid; /* pid_t */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* __mac_get_link */
case 410: {
struct __mac_get_link_args *p = params;
uarg[0] = (intptr_t) p->path_p; /* const char * */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* __mac_set_link */
case 411: {
struct __mac_set_link_args *p = params;
uarg[0] = (intptr_t) p->path_p; /* const char * */
uarg[1] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 2;
break;
}
/* extattr_set_link */
case 412: {
struct extattr_set_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_get_link */
case 413: {
struct extattr_get_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
uarg[3] = (intptr_t) p->data; /* void * */
uarg[4] = p->nbytes; /* size_t */
*n_args = 5;
break;
}
/* extattr_delete_link */
case 414: {
struct extattr_delete_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->attrname; /* const char * */
*n_args = 3;
break;
}
/* __mac_execve */
case 415: {
struct __mac_execve_args *p = params;
uarg[0] = (intptr_t) p->fname; /* char * */
uarg[1] = (intptr_t) p->argv; /* char ** */
uarg[2] = (intptr_t) p->envv; /* char ** */
uarg[3] = (intptr_t) p->mac_p; /* struct mac * */
*n_args = 4;
break;
}
/* sigaction */
case 416: {
struct sigaction_args *p = params;
iarg[0] = p->sig; /* int */
uarg[1] = (intptr_t) p->act; /* const struct sigaction * */
uarg[2] = (intptr_t) p->oact; /* struct sigaction * */
*n_args = 3;
break;
}
/* sigreturn */
case 417: {
struct sigreturn_args *p = params;
uarg[0] = (intptr_t) p->sigcntxp; /* const struct __ucontext * */
*n_args = 1;
break;
}
/* getcontext */
case 421: {
struct getcontext_args *p = params;
uarg[0] = (intptr_t) p->ucp; /* struct __ucontext * */
*n_args = 1;
break;
}
/* setcontext */
case 422: {
struct setcontext_args *p = params;
uarg[0] = (intptr_t) p->ucp; /* const struct __ucontext * */
*n_args = 1;
break;
}
/* swapcontext */
case 423: {
struct swapcontext_args *p = params;
uarg[0] = (intptr_t) p->oucp; /* struct __ucontext * */
uarg[1] = (intptr_t) p->ucp; /* const struct __ucontext * */
*n_args = 2;
break;
}
/* swapoff */
case 424: {
struct swapoff_args *p = params;
uarg[0] = (intptr_t) p->name; /* const char * */
*n_args = 1;
break;
}
/* __acl_get_link */
case 425: {
struct __acl_get_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_set_link */
case 426: {
struct __acl_set_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* __acl_delete_link */
case 427: {
struct __acl_delete_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
*n_args = 2;
break;
}
/* __acl_aclcheck_link */
case 428: {
struct __acl_aclcheck_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->type; /* acl_type_t */
uarg[2] = (intptr_t) p->aclp; /* struct acl * */
*n_args = 3;
break;
}
/* sigwait */
case 429: {
struct sigwait_args *p = params;
uarg[0] = (intptr_t) p->set; /* const sigset_t * */
uarg[1] = (intptr_t) p->sig; /* int * */
*n_args = 2;
break;
}
/* thr_create */
case 430: {
struct thr_create_args *p = params;
uarg[0] = (intptr_t) p->ctx; /* ucontext_t * */
uarg[1] = (intptr_t) p->id; /* long * */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* thr_exit */
case 431: {
struct thr_exit_args *p = params;
uarg[0] = (intptr_t) p->state; /* long * */
*n_args = 1;
break;
}
/* thr_self */
case 432: {
struct thr_self_args *p = params;
uarg[0] = (intptr_t) p->id; /* long * */
*n_args = 1;
break;
}
/* thr_kill */
case 433: {
struct thr_kill_args *p = params;
iarg[0] = p->id; /* long */
iarg[1] = p->sig; /* int */
*n_args = 2;
break;
}
/* _umtx_lock */
case 434: {
struct _umtx_lock_args *p = params;
uarg[0] = (intptr_t) p->umtx; /* struct umtx * */
*n_args = 1;
break;
}
/* _umtx_unlock */
case 435: {
struct _umtx_unlock_args *p = params;
uarg[0] = (intptr_t) p->umtx; /* struct umtx * */
*n_args = 1;
break;
}
/* jail_attach */
case 436: {
struct jail_attach_args *p = params;
iarg[0] = p->jid; /* int */
*n_args = 1;
break;
}
/* extattr_list_fd */
case 437: {
struct extattr_list_fd_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->data; /* void * */
uarg[3] = p->nbytes; /* size_t */
*n_args = 4;
break;
}
/* extattr_list_file */
case 438: {
struct extattr_list_file_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->data; /* void * */
uarg[3] = p->nbytes; /* size_t */
*n_args = 4;
break;
}
/* extattr_list_link */
case 439: {
struct extattr_list_link_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->attrnamespace; /* int */
uarg[2] = (intptr_t) p->data; /* void * */
uarg[3] = p->nbytes; /* size_t */
*n_args = 4;
break;
}
/* ksem_timedwait */
case 441: {
struct ksem_timedwait_args *p = params;
iarg[0] = p->id; /* semid_t */
uarg[1] = (intptr_t) p->abstime; /* const struct timespec * */
*n_args = 2;
break;
}
/* thr_suspend */
case 442: {
struct thr_suspend_args *p = params;
uarg[0] = (intptr_t) p->timeout; /* const struct timespec * */
*n_args = 1;
break;
}
/* thr_wake */
case 443: {
struct thr_wake_args *p = params;
iarg[0] = p->id; /* long */
*n_args = 1;
break;
}
/* kldunloadf */
case 444: {
struct kldunloadf_args *p = params;
iarg[0] = p->fileid; /* int */
iarg[1] = p->flags; /* int */
*n_args = 2;
break;
}
/* audit */
case 445: {
struct audit_args *p = params;
uarg[0] = (intptr_t) p->record; /* const void * */
uarg[1] = p->length; /* u_int */
*n_args = 2;
break;
}
/* auditon */
case 446: {
struct auditon_args *p = params;
iarg[0] = p->cmd; /* int */
uarg[1] = (intptr_t) p->data; /* void * */
uarg[2] = p->length; /* u_int */
*n_args = 3;
break;
}
/* getauid */
case 447: {
struct getauid_args *p = params;
uarg[0] = (intptr_t) p->auid; /* uid_t * */
*n_args = 1;
break;
}
/* setauid */
case 448: {
struct setauid_args *p = params;
uarg[0] = (intptr_t) p->auid; /* uid_t * */
*n_args = 1;
break;
}
/* getaudit */
case 449: {
struct getaudit_args *p = params;
uarg[0] = (intptr_t) p->auditinfo; /* struct auditinfo * */
*n_args = 1;
break;
}
/* setaudit */
case 450: {
struct setaudit_args *p = params;
uarg[0] = (intptr_t) p->auditinfo; /* struct auditinfo * */
*n_args = 1;
break;
}
/* getaudit_addr */
case 451: {
struct getaudit_addr_args *p = params;
uarg[0] = (intptr_t) p->auditinfo_addr; /* struct auditinfo_addr * */
uarg[1] = p->length; /* u_int */
*n_args = 2;
break;
}
/* setaudit_addr */
case 452: {
struct setaudit_addr_args *p = params;
uarg[0] = (intptr_t) p->auditinfo_addr; /* struct auditinfo_addr * */
uarg[1] = p->length; /* u_int */
*n_args = 2;
break;
}
/* auditctl */
case 453: {
struct auditctl_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* _umtx_op */
case 454: {
struct _umtx_op_args *p = params;
2006-08-28 04:28:25 +00:00
uarg[0] = (intptr_t) p->obj; /* void * */
iarg[1] = p->op; /* int */
2006-10-17 02:28:58 +00:00
uarg[2] = p->val; /* u_long */
2006-08-28 04:28:25 +00:00
uarg[3] = (intptr_t) p->uaddr1; /* void * */
uarg[4] = (intptr_t) p->uaddr2; /* void * */
*n_args = 5;
break;
}
/* thr_new */
case 455: {
struct thr_new_args *p = params;
uarg[0] = (intptr_t) p->param; /* struct thr_param * */
iarg[1] = p->param_size; /* int */
*n_args = 2;
break;
}
/* sigqueue */
case 456: {
struct sigqueue_args *p = params;
iarg[0] = p->pid; /* pid_t */
iarg[1] = p->signum; /* int */
uarg[2] = (intptr_t) p->value; /* void * */
*n_args = 3;
break;
}
/* kmq_open */
case 457: {
struct kmq_open_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->flags; /* int */
iarg[2] = p->mode; /* mode_t */
uarg[3] = (intptr_t) p->attr; /* const struct mq_attr * */
*n_args = 4;
break;
}
/* kmq_setattr */
case 458: {
struct kmq_setattr_args *p = params;
iarg[0] = p->mqd; /* int */
uarg[1] = (intptr_t) p->attr; /* const struct mq_attr * */
uarg[2] = (intptr_t) p->oattr; /* struct mq_attr * */
*n_args = 3;
break;
}
/* kmq_timedreceive */
case 459: {
struct kmq_timedreceive_args *p = params;
iarg[0] = p->mqd; /* int */
uarg[1] = (intptr_t) p->msg_ptr; /* char * */
uarg[2] = p->msg_len; /* size_t */
uarg[3] = (intptr_t) p->msg_prio; /* unsigned * */
uarg[4] = (intptr_t) p->abs_timeout; /* const struct timespec * */
*n_args = 5;
break;
}
/* kmq_timedsend */
case 460: {
struct kmq_timedsend_args *p = params;
iarg[0] = p->mqd; /* int */
uarg[1] = (intptr_t) p->msg_ptr; /* const char * */
uarg[2] = p->msg_len; /* size_t */
uarg[3] = p->msg_prio; /* unsigned */
uarg[4] = (intptr_t) p->abs_timeout; /* const struct timespec * */
*n_args = 5;
break;
}
/* kmq_notify */
case 461: {
struct kmq_notify_args *p = params;
iarg[0] = p->mqd; /* int */
uarg[1] = (intptr_t) p->sigev; /* const struct sigevent * */
*n_args = 2;
break;
}
/* kmq_unlink */
case 462: {
struct kmq_unlink_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
*n_args = 1;
break;
}
/* abort2 */
case 463: {
struct abort2_args *p = params;
uarg[0] = (intptr_t) p->why; /* const char * */
iarg[1] = p->nargs; /* int */
uarg[2] = (intptr_t) p->args; /* void ** */
*n_args = 3;
break;
}
/* thr_set_name */
case 464: {
struct thr_set_name_args *p = params;
iarg[0] = p->id; /* long */
uarg[1] = (intptr_t) p->name; /* const char * */
*n_args = 2;
break;
}
/* aio_fsync */
case 465: {
struct aio_fsync_args *p = params;
iarg[0] = p->op; /* int */
uarg[1] = (intptr_t) p->aiocbp; /* struct aiocb * */
*n_args = 2;
break;
}
2006-09-21 04:19:48 +00:00
/* rtprio_thread */
case 466: {
2006-09-21 04:19:48 +00:00
struct rtprio_thread_args *p = params;
iarg[0] = p->function; /* int */
iarg[1] = p->lwpid; /* lwpid_t */
uarg[2] = (intptr_t) p->rtp; /* struct rtprio * */
*n_args = 3;
break;
}
/* sctp_peeloff */
case 471: {
struct sctp_peeloff_args *p = params;
iarg[0] = p->sd; /* int */
uarg[1] = p->name; /* uint32_t */
*n_args = 2;
break;
}
/* sctp_generic_sendmsg */
case 472: {
struct sctp_generic_sendmsg_args *p = params;
iarg[0] = p->sd; /* int */
uarg[1] = (intptr_t) p->msg; /* caddr_t */
iarg[2] = p->mlen; /* int */
uarg[3] = (intptr_t) p->to; /* caddr_t */
iarg[4] = p->tolen; /* __socklen_t */
uarg[5] = (intptr_t) p->sinfo; /* struct sctp_sndrcvinfo * */
iarg[6] = p->flags; /* int */
*n_args = 7;
break;
}
/* sctp_generic_sendmsg_iov */
case 473: {
struct sctp_generic_sendmsg_iov_args *p = params;
iarg[0] = p->sd; /* int */
uarg[1] = (intptr_t) p->iov; /* struct iovec * */
iarg[2] = p->iovlen; /* int */
uarg[3] = (intptr_t) p->to; /* caddr_t */
iarg[4] = p->tolen; /* __socklen_t */
uarg[5] = (intptr_t) p->sinfo; /* struct sctp_sndrcvinfo * */
iarg[6] = p->flags; /* int */
*n_args = 7;
break;
}
/* sctp_generic_recvmsg */
case 474: {
struct sctp_generic_recvmsg_args *p = params;
iarg[0] = p->sd; /* int */
uarg[1] = (intptr_t) p->iov; /* struct iovec * */
iarg[2] = p->iovlen; /* int */
uarg[3] = (intptr_t) p->from; /* struct sockaddr * */
uarg[4] = (intptr_t) p->fromlenaddr; /* __socklen_t * */
uarg[5] = (intptr_t) p->sinfo; /* struct sctp_sndrcvinfo * */
uarg[6] = (intptr_t) p->msg_flags; /* int * */
*n_args = 7;
break;
}
/* pread */
case 475: {
struct pread_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* void * */
uarg[2] = p->nbyte; /* size_t */
iarg[3] = p->offset; /* off_t */
*n_args = 4;
break;
}
/* pwrite */
case 476: {
struct pwrite_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->buf; /* const void * */
uarg[2] = p->nbyte; /* size_t */
iarg[3] = p->offset; /* off_t */
*n_args = 4;
break;
}
/* mmap */
case 477: {
struct mmap_args *p = params;
uarg[0] = (intptr_t) p->addr; /* caddr_t */
uarg[1] = p->len; /* size_t */
iarg[2] = p->prot; /* int */
iarg[3] = p->flags; /* int */
iarg[4] = p->fd; /* int */
iarg[5] = p->pos; /* off_t */
*n_args = 6;
break;
}
/* lseek */
case 478: {
struct lseek_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->offset; /* off_t */
iarg[2] = p->whence; /* int */
*n_args = 3;
break;
}
/* truncate */
case 479: {
struct truncate_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->length; /* off_t */
*n_args = 2;
break;
}
/* ftruncate */
case 480: {
struct ftruncate_args *p = params;
iarg[0] = p->fd; /* int */
iarg[1] = p->length; /* off_t */
*n_args = 2;
break;
}
2007-08-16 05:32:26 +00:00
/* thr_kill2 */
case 481: {
struct thr_kill2_args *p = params;
iarg[0] = p->pid; /* pid_t */
iarg[1] = p->id; /* long */
iarg[2] = p->sig; /* int */
*n_args = 3;
break;
}
/* shm_open */
case 482: {
struct shm_open_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
iarg[1] = p->flags; /* int */
iarg[2] = p->mode; /* mode_t */
*n_args = 3;
break;
}
/* shm_unlink */
case 483: {
struct shm_unlink_args *p = params;
uarg[0] = (intptr_t) p->path; /* const char * */
*n_args = 1;
break;
}
2008-03-02 07:41:10 +00:00
/* cpuset */
case 484: {
struct cpuset_args *p = params;
uarg[0] = (intptr_t) p->setid; /* cpusetid_t * */
*n_args = 1;
break;
}
/* cpuset_setid */
case 485: {
struct cpuset_setid_args *p = params;
iarg[0] = p->which; /* cpuwhich_t */
iarg[1] = p->id; /* id_t */
iarg[2] = p->setid; /* cpusetid_t */
*n_args = 3;
break;
}
/* cpuset_getid */
case 486: {
struct cpuset_getid_args *p = params;
iarg[0] = p->level; /* cpulevel_t */
iarg[1] = p->which; /* cpuwhich_t */
iarg[2] = p->id; /* id_t */
uarg[3] = (intptr_t) p->setid; /* cpusetid_t * */
*n_args = 4;
break;
}
/* cpuset_getaffinity */
case 487: {
struct cpuset_getaffinity_args *p = params;
iarg[0] = p->level; /* cpulevel_t */
iarg[1] = p->which; /* cpuwhich_t */
iarg[2] = p->id; /* id_t */
uarg[3] = p->cpusetsize; /* size_t */
uarg[4] = (intptr_t) p->mask; /* cpuset_t * */
2008-03-02 07:41:10 +00:00
*n_args = 5;
break;
}
/* cpuset_setaffinity */
case 488: {
struct cpuset_setaffinity_args *p = params;
iarg[0] = p->level; /* cpulevel_t */
iarg[1] = p->which; /* cpuwhich_t */
iarg[2] = p->id; /* id_t */
uarg[3] = p->cpusetsize; /* size_t */
uarg[4] = (intptr_t) p->mask; /* const cpuset_t * */
2008-03-02 07:41:10 +00:00
*n_args = 5;
break;
}
2008-03-31 12:12:27 +00:00
/* faccessat */
case 489: {
struct faccessat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->mode; /* int */
iarg[3] = p->flag; /* int */
*n_args = 4;
break;
}
/* fchmodat */
case 490: {
struct fchmodat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->mode; /* mode_t */
iarg[3] = p->flag; /* int */
*n_args = 4;
break;
}
/* fchownat */
case 491: {
struct fchownat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
uarg[2] = p->uid; /* uid_t */
iarg[3] = p->gid; /* gid_t */
iarg[4] = p->flag; /* int */
*n_args = 5;
break;
}
/* fexecve */
case 492: {
struct fexecve_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->argv; /* char ** */
uarg[2] = (intptr_t) p->envv; /* char ** */
*n_args = 3;
break;
}
/* fstatat */
case 493: {
struct fstatat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
uarg[2] = (intptr_t) p->buf; /* struct stat * */
iarg[3] = p->flag; /* int */
*n_args = 4;
break;
}
/* futimesat */
case 494: {
struct futimesat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
uarg[2] = (intptr_t) p->times; /* struct timeval * */
*n_args = 3;
break;
}
/* linkat */
case 495: {
struct linkat_args *p = params;
iarg[0] = p->fd1; /* int */
uarg[1] = (intptr_t) p->path1; /* char * */
iarg[2] = p->fd2; /* int */
uarg[3] = (intptr_t) p->path2; /* char * */
iarg[4] = p->flag; /* int */
*n_args = 5;
break;
}
/* mkdirat */
case 496: {
struct mkdirat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->mode; /* mode_t */
*n_args = 3;
break;
}
/* mkfifoat */
case 497: {
struct mkfifoat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->mode; /* mode_t */
*n_args = 3;
break;
}
/* mknodat */
case 498: {
struct mknodat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->mode; /* mode_t */
iarg[3] = p->dev; /* dev_t */
*n_args = 4;
break;
}
/* openat */
case 499: {
struct openat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->flag; /* int */
iarg[3] = p->mode; /* mode_t */
*n_args = 4;
break;
}
/* readlinkat */
case 500: {
struct readlinkat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
uarg[2] = (intptr_t) p->buf; /* char * */
uarg[3] = p->bufsize; /* size_t */
*n_args = 4;
break;
}
/* renameat */
case 501: {
struct renameat_args *p = params;
iarg[0] = p->oldfd; /* int */
uarg[1] = (intptr_t) p->old; /* char * */
iarg[2] = p->newfd; /* int */
uarg[3] = (intptr_t) p->new; /* char * */
*n_args = 4;
break;
}
/* symlinkat */
case 502: {
struct symlinkat_args *p = params;
uarg[0] = (intptr_t) p->path1; /* char * */
iarg[1] = p->fd; /* int */
uarg[2] = (intptr_t) p->path2; /* char * */
*n_args = 3;
break;
}
/* unlinkat */
case 503: {
struct unlinkat_args *p = params;
iarg[0] = p->fd; /* int */
uarg[1] = (intptr_t) p->path; /* char * */
iarg[2] = p->flag; /* int */
*n_args = 3;
break;
}
Integrate the new MPSAFE TTY layer to the FreeBSD operating system. The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following: - Improved driver model: The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers. If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver. - Improved hotplugging: With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc). The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly. - Improved performance: One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters. Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING. Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
2008-08-20 08:31:58 +00:00
/* posix_openpt */
case 504: {
struct posix_openpt_args *p = params;
iarg[0] = p->flags; /* int */
*n_args = 1;
break;
}
2008-11-03 10:39:35 +00:00
/* gssd_syscall */
case 505: {
struct gssd_syscall_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
*n_args = 1;
break;
}
/* jail_get */
case 506: {
struct jail_get_args *p = params;
uarg[0] = (intptr_t) p->iovp; /* struct iovec * */
uarg[1] = p->iovcnt; /* unsigned int */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* jail_set */
case 507: {
struct jail_set_args *p = params;
uarg[0] = (intptr_t) p->iovp; /* struct iovec * */
uarg[1] = p->iovcnt; /* unsigned int */
iarg[2] = p->flags; /* int */
*n_args = 3;
break;
}
/* jail_remove */
case 508: {
struct jail_remove_args *p = params;
iarg[0] = p->jid; /* int */
*n_args = 1;
break;
}
2009-06-15 20:40:23 +00:00
/* closefrom */
case 509: {
struct closefrom_args *p = params;
iarg[0] = p->lowfd; /* int */
*n_args = 1;
break;
}
2009-06-24 21:54:08 +00:00
/* __semctl */
case 510: {
struct __semctl_args *p = params;
iarg[0] = p->semid; /* int */
iarg[1] = p->semnum; /* int */
iarg[2] = p->cmd; /* int */
uarg[3] = (intptr_t) p->arg; /* union semun * */
*n_args = 4;
break;
}
/* msgctl */
case 511: {
struct msgctl_args *p = params;
iarg[0] = p->msqid; /* int */
iarg[1] = p->cmd; /* int */
uarg[2] = (intptr_t) p->buf; /* struct msqid_ds * */
*n_args = 3;
break;
}
/* shmctl */
case 512: {
struct shmctl_args *p = params;
iarg[0] = p->shmid; /* int */
iarg[1] = p->cmd; /* int */
uarg[2] = (intptr_t) p->buf; /* struct shmid_ds * */
*n_args = 3;
break;
}
/* lpathconf */
case 513: {
struct lpathconf_args *p = params;
uarg[0] = (intptr_t) p->path; /* char * */
iarg[1] = p->name; /* int */
*n_args = 2;
break;
}
2009-10-27 11:01:15 +00:00
/* pselect */
case 522: {
struct pselect_args *p = params;
iarg[0] = p->nd; /* int */
uarg[1] = (intptr_t) p->in; /* fd_set * */
uarg[2] = (intptr_t) p->ou; /* fd_set * */
uarg[3] = (intptr_t) p->ex; /* fd_set * */
uarg[4] = (intptr_t) p->ts; /* const struct timespec * */
uarg[5] = (intptr_t) p->sm; /* const sigset_t * */
*n_args = 6;
break;
}
default:
*n_args = 0;
break;
};
}
2008-03-27 01:55:06 +00:00
static void
systrace_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
{
const char *p = NULL;
switch (sysnum) {
/* nosys */
case 0:
break;
/* sys_exit */
case 1:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* fork */
case 2:
break;
/* read */
case 3:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "void *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
/* write */
case 4:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const void *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
/* open */
case 5:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* close */
case 6:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* wait4 */
case 7:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int *";
break;
case 2:
p = "int";
break;
case 3:
p = "struct rusage *";
break;
default:
break;
};
break;
/* link */
case 9:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char *";
break;
default:
break;
};
break;
/* unlink */
case 10:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* chdir */
case 12:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* fchdir */
case 13:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* mknod */
case 14:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* chmod */
case 15:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* chown */
case 16:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* obreak */
case 17:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* getpid */
case 20:
break;
/* mount */
case 21:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
default:
break;
};
break;
/* unmount */
case 22:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* setuid */
case 23:
switch(ndx) {
case 0:
p = "uid_t";
break;
default:
break;
};
break;
/* getuid */
case 24:
break;
/* geteuid */
case 25:
break;
/* ptrace */
case 26:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "pid_t";
break;
case 2:
p = "caddr_t";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* recvmsg */
case 27:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct msghdr *";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* sendmsg */
case 28:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct msghdr *";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* recvfrom */
case 29:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
case 2:
p = "size_t";
break;
case 3:
p = "int";
break;
case 4:
p = "struct sockaddr *__restrict";
break;
case 5:
p = "__socklen_t *__restrict";
break;
default:
break;
};
break;
/* accept */
case 30:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct sockaddr *__restrict";
break;
case 2:
p = "__socklen_t *__restrict";
break;
default:
break;
};
break;
/* getpeername */
case 31:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct sockaddr *__restrict";
break;
case 2:
p = "__socklen_t *__restrict";
break;
default:
break;
};
break;
/* getsockname */
case 32:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct sockaddr *__restrict";
break;
case 2:
p = "__socklen_t *__restrict";
break;
default:
break;
};
break;
/* access */
case 33:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* chflags */
case 34:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* fchflags */
case 35:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* sync */
case 36:
break;
/* kill */
case 37:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* getppid */
case 39:
break;
/* dup */
case 41:
switch(ndx) {
case 0:
p = "u_int";
break;
default:
break;
};
break;
/* pipe */
case 42:
break;
/* getegid */
case 43:
break;
/* profil */
case 44:
switch(ndx) {
case 0:
p = "caddr_t";
break;
case 1:
p = "size_t";
break;
case 2:
p = "size_t";
break;
case 3:
p = "u_int";
break;
default:
break;
};
break;
/* ktrace */
case 45:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* getgid */
case 47:
break;
/* getlogin */
case 49:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* setlogin */
case 50:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* acct */
case 51:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* sigaltstack */
case 53:
switch(ndx) {
case 0:
p = "stack_t *";
break;
case 1:
p = "stack_t *";
break;
default:
break;
};
break;
/* ioctl */
case 54:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "u_long";
break;
case 2:
p = "caddr_t";
break;
default:
break;
};
break;
/* reboot */
case 55:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* revoke */
case 56:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* symlink */
case 57:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char *";
break;
default:
break;
};
break;
/* readlink */
case 58:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
/* execve */
case 59:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char **";
break;
case 2:
p = "char **";
break;
default:
break;
};
break;
/* umask */
case 60:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* chroot */
case 61:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* msync */
case 65:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* vfork */
case 66:
break;
/* sbrk */
case 69:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* sstk */
case 70:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* ovadvise */
case 72:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* munmap */
case 73:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "size_t";
break;
default:
break;
};
break;
/* mprotect */
case 74:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* madvise */
case 75:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* mincore */
case 78:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "char *";
break;
default:
break;
};
break;
/* getgroups */
case 79:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "gid_t *";
break;
default:
break;
};
break;
/* setgroups */
case 80:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "gid_t *";
break;
default:
break;
};
break;
/* getpgrp */
case 81:
break;
/* setpgid */
case 82:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* setitimer */
case 83:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "struct itimerval *";
break;
case 2:
p = "struct itimerval *";
break;
default:
break;
};
break;
/* swapon */
case 85:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* getitimer */
case 86:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "struct itimerval *";
break;
default:
break;
};
break;
/* getdtablesize */
case 89:
break;
/* dup2 */
case 90:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* fcntl */
case 92:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "long";
break;
default:
break;
};
break;
/* select */
case 93:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "fd_set *";
break;
case 2:
p = "fd_set *";
break;
case 3:
p = "fd_set *";
break;
case 4:
p = "struct timeval *";
break;
default:
break;
};
break;
/* fsync */
case 95:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* setpriority */
case 96:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* socket */
case 97:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* connect */
case 98:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* getpriority */
case 100:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* bind */
case 104:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* setsockopt */
case 105:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
case 4:
p = "int";
break;
default:
break;
};
break;
/* listen */
case 106:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* gettimeofday */
case 116:
switch(ndx) {
case 0:
p = "struct timeval *";
break;
case 1:
p = "struct timezone *";
break;
default:
break;
};
break;
/* getrusage */
case 117:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct rusage *";
break;
default:
break;
};
break;
/* getsockopt */
case 118:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
case 4:
p = "int *";
break;
default:
break;
};
break;
/* readv */
case 120:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "u_int";
break;
default:
break;
};
break;
/* writev */
case 121:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "u_int";
break;
default:
break;
};
break;
/* settimeofday */
case 122:
switch(ndx) {
case 0:
p = "struct timeval *";
break;
case 1:
p = "struct timezone *";
break;
default:
break;
};
break;
/* fchown */
case 123:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* fchmod */
case 124:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* setreuid */
case 126:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* setregid */
case 127:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* rename */
case 128:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char *";
break;
default:
break;
};
break;
/* flock */
case 131:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* mkfifo */
case 132:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* sendto */
case 133:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
case 2:
p = "size_t";
break;
case 3:
p = "int";
break;
case 4:
p = "caddr_t";
break;
case 5:
p = "int";
break;
default:
break;
};
break;
/* shutdown */
case 134:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* socketpair */
case 135:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "int *";
break;
default:
break;
};
break;
/* mkdir */
case 136:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* rmdir */
case 137:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* utimes */
case 138:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct timeval *";
break;
default:
break;
};
break;
/* adjtime */
case 140:
switch(ndx) {
case 0:
p = "struct timeval *";
break;
case 1:
p = "struct timeval *";
break;
default:
break;
};
break;
/* setsid */
case 147:
break;
/* quotactl */
case 148:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
default:
break;
};
break;
/* nlm_syscall */
case 154:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "char **";
break;
default:
break;
};
break;
/* nfssvc */
case 155:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
default:
break;
};
break;
/* lgetfh */
case 160:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct fhandle *";
break;
default:
break;
};
break;
/* getfh */
case 161:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct fhandle *";
break;
default:
break;
};
break;
/* sysarch */
case 165:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
default:
break;
};
break;
/* rtprio */
case 166:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "pid_t";
break;
case 2:
p = "struct rtprio *";
break;
default:
break;
};
break;
/* semsys */
case 169:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
case 4:
p = "int";
break;
default:
break;
};
break;
/* msgsys */
case 170:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
case 4:
p = "int";
break;
case 5:
p = "int";
break;
default:
break;
};
break;
/* shmsys */
case 171:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* freebsd6_pread */
case 173:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "int";
break;
case 4:
p = "off_t";
break;
default:
break;
};
break;
/* freebsd6_pwrite */
case 174:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "int";
break;
case 4:
p = "off_t";
break;
default:
break;
};
break;
Integrate the new MPSAFE TTY layer to the FreeBSD operating system. The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following: - Improved driver model: The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers. If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver. - Improved hotplugging: With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc). The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly. - Improved performance: One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters. Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING. Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
2008-08-20 08:31:58 +00:00
/* setfib */
case 175:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
2008-03-27 01:55:06 +00:00
/* ntp_adjtime */
case 176:
switch(ndx) {
case 0:
p = "struct timex *";
break;
default:
break;
};
break;
/* setgid */
case 181:
switch(ndx) {
case 0:
p = "gid_t";
break;
default:
break;
};
break;
/* setegid */
case 182:
switch(ndx) {
case 0:
p = "gid_t";
break;
default:
break;
};
break;
/* seteuid */
case 183:
switch(ndx) {
case 0:
p = "uid_t";
break;
default:
break;
};
break;
/* stat */
case 188:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct stat *";
break;
default:
break;
};
break;
/* fstat */
case 189:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct stat *";
break;
default:
break;
};
break;
/* lstat */
case 190:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct stat *";
break;
default:
break;
};
break;
/* pathconf */
case 191:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* fpathconf */
case 192:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* getrlimit */
case 194:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "struct rlimit *";
break;
default:
break;
};
break;
/* setrlimit */
case 195:
switch(ndx) {
case 0:
p = "u_int";
break;
case 1:
p = "struct rlimit *";
break;
default:
break;
};
break;
/* getdirentries */
case 196:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "u_int";
break;
case 3:
p = "long *";
break;
default:
break;
};
break;
/* freebsd6_mmap */
case 197:
switch(ndx) {
case 0:
p = "caddr_t";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
case 4:
p = "int";
break;
case 5:
p = "int";
break;
case 6:
p = "off_t";
break;
default:
break;
};
break;
/* nosys */
case 198:
break;
/* freebsd6_lseek */
case 199:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "off_t";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* freebsd6_truncate */
case 200:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "off_t";
break;
default:
break;
};
break;
/* freebsd6_ftruncate */
case 201:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "off_t";
break;
default:
break;
};
break;
/* __sysctl */
case 202:
switch(ndx) {
case 0:
p = "int *";
break;
case 1:
p = "u_int";
break;
case 2:
p = "void *";
break;
case 3:
p = "size_t *";
break;
case 4:
p = "void *";
break;
case 5:
p = "size_t";
break;
default:
break;
};
break;
/* mlock */
case 203:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "size_t";
break;
default:
break;
};
break;
/* munlock */
case 204:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "size_t";
break;
default:
break;
};
break;
/* undelete */
case 205:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* futimes */
case 206:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct timeval *";
break;
default:
break;
};
break;
/* getpgid */
case 207:
switch(ndx) {
case 0:
p = "pid_t";
break;
default:
break;
};
break;
/* poll */
case 209:
switch(ndx) {
case 0:
p = "struct pollfd *";
break;
case 1:
p = "u_int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* lkmnosys */
case 210:
break;
/* lkmnosys */
case 211:
break;
/* lkmnosys */
case 212:
break;
/* lkmnosys */
case 213:
break;
/* lkmnosys */
case 214:
break;
/* lkmnosys */
case 215:
break;
/* lkmnosys */
case 216:
break;
/* lkmnosys */
case 217:
break;
/* lkmnosys */
case 218:
break;
/* lkmnosys */
case 219:
break;
/* semget */
case 221:
switch(ndx) {
case 0:
p = "key_t";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* semop */
case 222:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct sembuf *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
/* msgget */
case 225:
switch(ndx) {
case 0:
p = "key_t";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* msgsnd */
case 226:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* msgrcv */
case 227:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "long";
break;
case 4:
p = "int";
break;
default:
break;
};
break;
/* shmat */
case 228:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const void *";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* shmdt */
case 230:
switch(ndx) {
case 0:
p = "const void *";
break;
default:
break;
};
break;
/* shmget */
case 231:
switch(ndx) {
case 0:
p = "key_t";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* clock_gettime */
case 232:
switch(ndx) {
case 0:
p = "clockid_t";
break;
case 1:
p = "struct timespec *";
break;
default:
break;
};
break;
/* clock_settime */
case 233:
switch(ndx) {
case 0:
p = "clockid_t";
break;
case 1:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* clock_getres */
case 234:
switch(ndx) {
case 0:
p = "clockid_t";
break;
case 1:
p = "struct timespec *";
break;
default:
break;
};
break;
/* ktimer_create */
case 235:
switch(ndx) {
case 0:
p = "clockid_t";
break;
case 1:
p = "struct sigevent *";
break;
case 2:
p = "int *";
break;
default:
break;
};
break;
/* ktimer_delete */
case 236:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* ktimer_settime */
case 237:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "const struct itimerspec *";
break;
case 3:
p = "struct itimerspec *";
break;
default:
break;
};
break;
/* ktimer_gettime */
case 238:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct itimerspec *";
break;
default:
break;
};
break;
/* ktimer_getoverrun */
case 239:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* nanosleep */
case 240:
switch(ndx) {
case 0:
p = "const struct timespec *";
break;
case 1:
p = "struct timespec *";
break;
default:
break;
};
break;
/* ntp_gettime */
case 248:
switch(ndx) {
case 0:
p = "struct ntptimeval *";
break;
default:
break;
};
break;
/* minherit */
case 250:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* rfork */
case 251:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* openbsd_poll */
case 252:
switch(ndx) {
case 0:
p = "struct pollfd *";
break;
case 1:
p = "u_int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* issetugid */
case 253:
break;
/* lchown */
case 254:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* aio_read */
case 255:
switch(ndx) {
case 0:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* aio_write */
case 256:
switch(ndx) {
case 0:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* lio_listio */
case 257:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct aiocb *const *";
break;
case 2:
p = "int";
break;
case 3:
p = "struct sigevent *";
break;
default:
break;
};
break;
/* getdents */
case 272:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
/* lchmod */
case 274:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "mode_t";
break;
default:
break;
};
break;
/* lchown */
case 275:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "uid_t";
break;
case 2:
p = "gid_t";
break;
default:
break;
};
break;
/* lutimes */
case 276:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct timeval *";
break;
default:
break;
};
break;
/* msync */
case 277:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* nstat */
case 278:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct nstat *";
break;
default:
break;
};
break;
/* nfstat */
case 279:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct nstat *";
break;
default:
break;
};
break;
/* nlstat */
case 280:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct nstat *";
break;
default:
break;
};
break;
/* preadv */
case 289:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "u_int";
break;
case 3:
p = "off_t";
break;
default:
break;
};
break;
/* pwritev */
case 290:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "u_int";
break;
case 3:
p = "off_t";
break;
default:
break;
};
break;
/* fhopen */
case 298:
switch(ndx) {
case 0:
p = "const struct fhandle *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* fhstat */
case 299:
switch(ndx) {
case 0:
p = "const struct fhandle *";
break;
case 1:
p = "struct stat *";
break;
default:
break;
};
break;
/* modnext */
case 300:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* modstat */
case 301:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct module_stat *";
break;
default:
break;
};
break;
/* modfnext */
case 302:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* modfind */
case 303:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* kldload */
case 304:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* kldunload */
case 305:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* kldfind */
case 306:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* kldnext */
case 307:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* kldstat */
case 308:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct kld_file_stat *";
break;
default:
break;
};
break;
/* kldfirstmod */
case 309:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* getsid */
case 310:
switch(ndx) {
case 0:
p = "pid_t";
break;
default:
break;
};
break;
/* setresuid */
case 311:
switch(ndx) {
case 0:
p = "uid_t";
break;
case 1:
p = "uid_t";
break;
case 2:
p = "uid_t";
break;
default:
break;
};
break;
/* setresgid */
case 312:
switch(ndx) {
case 0:
p = "gid_t";
break;
case 1:
p = "gid_t";
break;
case 2:
p = "gid_t";
break;
default:
break;
};
break;
/* aio_return */
case 314:
switch(ndx) {
case 0:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* aio_suspend */
case 315:
switch(ndx) {
case 0:
p = "struct aiocb *const *";
break;
case 1:
p = "int";
break;
case 2:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* aio_cancel */
case 316:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* aio_error */
case 317:
switch(ndx) {
case 0:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* oaio_read */
case 318:
switch(ndx) {
case 0:
p = "struct oaiocb *";
break;
default:
break;
};
break;
/* oaio_write */
case 319:
switch(ndx) {
case 0:
p = "struct oaiocb *";
break;
default:
break;
};
break;
/* olio_listio */
case 320:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct oaiocb *const *";
break;
case 2:
p = "int";
break;
case 3:
p = "struct osigevent *";
break;
default:
break;
};
break;
/* yield */
case 321:
break;
/* mlockall */
case 324:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* munlockall */
case 325:
break;
/* __getcwd */
case 326:
switch(ndx) {
case 0:
p = "u_char *";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* sched_setparam */
case 327:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "const struct sched_param *";
break;
default:
break;
};
break;
/* sched_getparam */
case 328:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "struct sched_param *";
break;
default:
break;
};
break;
/* sched_setscheduler */
case 329:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "int";
break;
case 2:
p = "const struct sched_param *";
break;
default:
break;
};
break;
/* sched_getscheduler */
case 330:
switch(ndx) {
case 0:
p = "pid_t";
break;
default:
break;
};
break;
/* sched_yield */
case 331:
break;
/* sched_get_priority_max */
case 332:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* sched_get_priority_min */
case 333:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* sched_rr_get_interval */
case 334:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "struct timespec *";
break;
default:
break;
};
break;
/* utrace */
case 335:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "size_t";
break;
default:
break;
};
break;
/* kldsym */
case 337:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
default:
break;
};
break;
/* jail */
case 338:
switch(ndx) {
case 0:
p = "struct jail *";
break;
default:
break;
};
break;
/* sigprocmask */
case 340:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const sigset_t *";
break;
case 2:
p = "sigset_t *";
break;
default:
break;
};
break;
/* sigsuspend */
case 341:
switch(ndx) {
case 0:
p = "const sigset_t *";
break;
default:
break;
};
break;
/* sigpending */
case 343:
switch(ndx) {
case 0:
p = "sigset_t *";
break;
default:
break;
};
break;
/* sigtimedwait */
case 345:
switch(ndx) {
case 0:
p = "const sigset_t *";
break;
case 1:
p = "siginfo_t *";
break;
case 2:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* sigwaitinfo */
case 346:
switch(ndx) {
case 0:
p = "const sigset_t *";
break;
case 1:
p = "siginfo_t *";
break;
default:
break;
};
break;
/* __acl_get_file */
case 347:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_set_file */
case 348:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_get_fd */
case 349:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_set_fd */
case 350:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_delete_file */
case 351:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
default:
break;
};
break;
/* __acl_delete_fd */
case 352:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "acl_type_t";
break;
default:
break;
};
break;
/* __acl_aclcheck_file */
case 353:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_aclcheck_fd */
case 354:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* extattrctl */
case 355:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "int";
break;
case 4:
p = "const char *";
break;
default:
break;
};
break;
/* extattr_set_file */
case 356:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_get_file */
case 357:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_delete_file */
case 358:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
default:
break;
};
break;
/* aio_waitcomplete */
case 359:
switch(ndx) {
case 0:
p = "struct aiocb **";
break;
case 1:
p = "struct timespec *";
break;
default:
break;
};
break;
/* getresuid */
case 360:
switch(ndx) {
case 0:
p = "uid_t *";
break;
case 1:
p = "uid_t *";
break;
case 2:
p = "uid_t *";
break;
default:
break;
};
break;
/* getresgid */
case 361:
switch(ndx) {
case 0:
p = "gid_t *";
break;
case 1:
p = "gid_t *";
break;
case 2:
p = "gid_t *";
break;
default:
break;
};
break;
/* kqueue */
case 362:
break;
/* kevent */
case 363:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct kevent *";
break;
case 2:
p = "int";
break;
case 3:
p = "struct kevent *";
break;
case 4:
p = "int";
break;
case 5:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* extattr_set_fd */
case 371:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_get_fd */
case 372:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_delete_fd */
case 373:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
default:
break;
};
break;
/* __setugid */
case 374:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* eaccess */
case 376:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* nmount */
case 378:
switch(ndx) {
case 0:
p = "struct iovec *";
break;
case 1:
p = "unsigned int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* __mac_get_proc */
case 384:
switch(ndx) {
case 0:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_set_proc */
case 385:
switch(ndx) {
case 0:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_get_fd */
case 386:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_get_file */
case 387:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_set_fd */
case 388:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_set_file */
case 389:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* kenv */
case 390:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const char *";
break;
case 2:
p = "char *";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* lchflags */
case 391:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* uuidgen */
case 392:
switch(ndx) {
case 0:
p = "struct uuid *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* sendfile */
case 393:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "off_t";
break;
case 3:
p = "size_t";
break;
case 4:
p = "struct sf_hdtr *";
break;
case 5:
p = "off_t *";
break;
case 6:
p = "int";
break;
default:
break;
};
break;
/* mac_syscall */
case 394:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
default:
break;
};
break;
/* getfsstat */
case 395:
switch(ndx) {
case 0:
p = "struct statfs *";
break;
case 1:
p = "long";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* statfs */
case 396:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "struct statfs *";
break;
default:
break;
};
break;
/* fstatfs */
case 397:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct statfs *";
break;
default:
break;
};
break;
/* fhstatfs */
case 398:
switch(ndx) {
case 0:
p = "const struct fhandle *";
break;
case 1:
p = "struct statfs *";
break;
default:
break;
};
break;
/* ksem_close */
case 400:
switch(ndx) {
case 0:
p = "semid_t";
break;
default:
break;
};
break;
/* ksem_post */
case 401:
switch(ndx) {
case 0:
p = "semid_t";
break;
default:
break;
};
break;
/* ksem_wait */
case 402:
switch(ndx) {
case 0:
p = "semid_t";
break;
default:
break;
};
break;
/* ksem_trywait */
case 403:
switch(ndx) {
case 0:
p = "semid_t";
break;
default:
break;
};
break;
/* ksem_init */
case 404:
switch(ndx) {
case 0:
p = "semid_t *";
break;
case 1:
p = "unsigned int";
break;
default:
break;
};
break;
/* ksem_open */
case 405:
switch(ndx) {
case 0:
p = "semid_t *";
break;
case 1:
p = "const char *";
break;
case 2:
p = "int";
break;
case 3:
p = "mode_t";
break;
case 4:
p = "unsigned int";
break;
default:
break;
};
break;
/* ksem_unlink */
case 406:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* ksem_getvalue */
case 407:
switch(ndx) {
case 0:
p = "semid_t";
break;
case 1:
p = "int *";
break;
default:
break;
};
break;
/* ksem_destroy */
case 408:
switch(ndx) {
case 0:
p = "semid_t";
break;
default:
break;
};
break;
/* __mac_get_pid */
case 409:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_get_link */
case 410:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* __mac_set_link */
case 411:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "struct mac *";
break;
default:
break;
};
break;
/* extattr_set_link */
case 412:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_get_link */
case 413:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
case 3:
p = "void *";
break;
case 4:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_delete_link */
case 414:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "const char *";
break;
default:
break;
};
break;
/* __mac_execve */
case 415:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "char **";
break;
case 2:
p = "char **";
break;
case 3:
p = "struct mac *";
break;
default:
break;
};
break;
/* sigaction */
case 416:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const struct sigaction *";
break;
case 2:
p = "struct sigaction *";
break;
default:
break;
};
break;
/* sigreturn */
case 417:
switch(ndx) {
case 0:
p = "const struct __ucontext *";
break;
default:
break;
};
break;
/* getcontext */
case 421:
switch(ndx) {
case 0:
p = "struct __ucontext *";
break;
default:
break;
};
break;
/* setcontext */
case 422:
switch(ndx) {
case 0:
p = "const struct __ucontext *";
break;
default:
break;
};
break;
/* swapcontext */
case 423:
switch(ndx) {
case 0:
p = "struct __ucontext *";
break;
case 1:
p = "const struct __ucontext *";
break;
default:
break;
};
break;
/* swapoff */
case 424:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* __acl_get_link */
case 425:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_set_link */
case 426:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* __acl_delete_link */
case 427:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
default:
break;
};
break;
/* __acl_aclcheck_link */
case 428:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "acl_type_t";
break;
case 2:
p = "struct acl *";
break;
default:
break;
};
break;
/* sigwait */
case 429:
switch(ndx) {
case 0:
p = "const sigset_t *";
break;
case 1:
p = "int *";
break;
default:
break;
};
break;
/* thr_create */
case 430:
switch(ndx) {
case 0:
p = "ucontext_t *";
break;
case 1:
p = "long *";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* thr_exit */
case 431:
switch(ndx) {
case 0:
p = "long *";
break;
default:
break;
};
break;
/* thr_self */
case 432:
switch(ndx) {
case 0:
p = "long *";
break;
default:
break;
};
break;
/* thr_kill */
case 433:
switch(ndx) {
case 0:
p = "long";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* _umtx_lock */
case 434:
switch(ndx) {
case 0:
p = "struct umtx *";
break;
default:
break;
};
break;
/* _umtx_unlock */
case 435:
switch(ndx) {
case 0:
p = "struct umtx *";
break;
default:
break;
};
break;
/* jail_attach */
case 436:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
/* extattr_list_fd */
case 437:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
case 3:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_list_file */
case 438:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
case 3:
p = "size_t";
break;
default:
break;
};
break;
/* extattr_list_link */
case 439:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
case 3:
p = "size_t";
break;
default:
break;
};
break;
/* ksem_timedwait */
case 441:
switch(ndx) {
case 0:
p = "semid_t";
break;
case 1:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* thr_suspend */
case 442:
switch(ndx) {
case 0:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* thr_wake */
case 443:
switch(ndx) {
case 0:
p = "long";
break;
default:
break;
};
break;
/* kldunloadf */
case 444:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* audit */
case 445:
switch(ndx) {
case 0:
p = "const void *";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* auditon */
case 446:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "void *";
break;
case 2:
p = "u_int";
break;
default:
break;
};
break;
/* getauid */
case 447:
switch(ndx) {
case 0:
p = "uid_t *";
break;
default:
break;
};
break;
/* setauid */
case 448:
switch(ndx) {
case 0:
p = "uid_t *";
break;
default:
break;
};
break;
/* getaudit */
case 449:
switch(ndx) {
case 0:
p = "struct auditinfo *";
break;
default:
break;
};
break;
/* setaudit */
case 450:
switch(ndx) {
case 0:
p = "struct auditinfo *";
break;
default:
break;
};
break;
/* getaudit_addr */
case 451:
switch(ndx) {
case 0:
p = "struct auditinfo_addr *";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* setaudit_addr */
case 452:
switch(ndx) {
case 0:
p = "struct auditinfo_addr *";
break;
case 1:
p = "u_int";
break;
default:
break;
};
break;
/* auditctl */
case 453:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* _umtx_op */
case 454:
switch(ndx) {
case 0:
p = "void *";
break;
case 1:
p = "int";
break;
case 2:
p = "u_long";
break;
case 3:
p = "void *";
break;
case 4:
p = "void *";
break;
default:
break;
};
break;
/* thr_new */
case 455:
switch(ndx) {
case 0:
p = "struct thr_param *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
/* sigqueue */
case 456:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "int";
break;
case 2:
p = "void *";
break;
default:
break;
};
break;
/* kmq_open */
case 457:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "mode_t";
break;
case 3:
p = "const struct mq_attr *";
break;
default:
break;
};
break;
/* kmq_setattr */
case 458:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const struct mq_attr *";
break;
case 2:
p = "struct mq_attr *";
break;
default:
break;
};
break;
/* kmq_timedreceive */
case 459:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "unsigned *";
break;
case 4:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* kmq_timedsend */
case 460:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const char *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "unsigned";
break;
case 4:
p = "const struct timespec *";
break;
default:
break;
};
break;
/* kmq_notify */
case 461:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const struct sigevent *";
break;
default:
break;
};
break;
/* kmq_unlink */
case 462:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* abort2 */
case 463:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "void **";
break;
default:
break;
};
break;
/* thr_set_name */
case 464:
switch(ndx) {
case 0:
p = "long";
break;
case 1:
p = "const char *";
break;
default:
break;
};
break;
/* aio_fsync */
case 465:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct aiocb *";
break;
default:
break;
};
break;
/* rtprio_thread */
case 466:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "lwpid_t";
break;
case 2:
p = "struct rtprio *";
break;
default:
break;
};
break;
/* sctp_peeloff */
case 471:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "uint32_t";
break;
default:
break;
};
break;
/* sctp_generic_sendmsg */
case 472:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "caddr_t";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
case 4:
p = "__socklen_t";
break;
case 5:
p = "struct sctp_sndrcvinfo *";
break;
case 6:
p = "int";
break;
default:
break;
};
break;
/* sctp_generic_sendmsg_iov */
case 473:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "int";
break;
case 3:
p = "caddr_t";
break;
case 4:
p = "__socklen_t";
break;
case 5:
p = "struct sctp_sndrcvinfo *";
break;
case 6:
p = "int";
break;
default:
break;
};
break;
/* sctp_generic_recvmsg */
case 474:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "struct iovec *";
break;
case 2:
p = "int";
break;
case 3:
p = "struct sockaddr *";
break;
case 4:
p = "__socklen_t *";
break;
case 5:
p = "struct sctp_sndrcvinfo *";
break;
case 6:
p = "int *";
break;
default:
break;
};
break;
/* pread */
case 475:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "off_t";
break;
default:
break;
};
break;
/* pwrite */
case 476:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "const void *";
break;
case 2:
p = "size_t";
break;
case 3:
p = "off_t";
break;
default:
break;
};
break;
/* mmap */
case 477:
switch(ndx) {
case 0:
p = "caddr_t";
break;
case 1:
p = "size_t";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
case 4:
p = "int";
break;
case 5:
p = "off_t";
break;
default:
break;
};
break;
/* lseek */
case 478:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "off_t";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* truncate */
case 479:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "off_t";
break;
default:
break;
};
break;
/* ftruncate */
case 480:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "off_t";
break;
default:
break;
};
break;
/* thr_kill2 */
case 481:
switch(ndx) {
case 0:
p = "pid_t";
break;
case 1:
p = "long";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* shm_open */
case 482:
switch(ndx) {
case 0:
p = "const char *";
break;
case 1:
p = "int";
break;
case 2:
p = "mode_t";
break;
default:
break;
};
break;
/* shm_unlink */
case 483:
switch(ndx) {
case 0:
p = "const char *";
break;
default:
break;
};
break;
/* cpuset */
case 484:
switch(ndx) {
case 0:
p = "cpusetid_t *";
break;
default:
break;
};
break;
/* cpuset_setid */
case 485:
switch(ndx) {
case 0:
p = "cpuwhich_t";
break;
case 1:
p = "id_t";
break;
case 2:
p = "cpusetid_t";
break;
default:
break;
};
break;
/* cpuset_getid */
case 486:
switch(ndx) {
case 0:
p = "cpulevel_t";
break;
case 1:
p = "cpuwhich_t";
break;
case 2:
p = "id_t";
break;
case 3:
p = "cpusetid_t *";
break;
default:
break;
};
break;
/* cpuset_getaffinity */
case 487:
switch(ndx) {
case 0:
p = "cpulevel_t";
break;
case 1:
p = "cpuwhich_t";
break;
case 2:
p = "id_t";
break;
case 3:
p = "size_t";
break;
case 4:
p = "cpuset_t *";
break;
default:
break;
};
break;
/* cpuset_setaffinity */
case 488:
switch(ndx) {
case 0:
p = "cpulevel_t";
break;
case 1:
p = "cpuwhich_t";
break;
case 2:
p = "id_t";
break;
case 3:
p = "size_t";
break;
case 4:
p = "const cpuset_t *";
break;
default:
break;
};
break;
2008-03-31 12:12:27 +00:00
/* faccessat */
case 489:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* fchmodat */
case 490:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "mode_t";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* fchownat */
case 491:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "uid_t";
break;
case 3:
p = "gid_t";
break;
case 4:
p = "int";
break;
default:
break;
};
break;
/* fexecve */
case 492:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char **";
break;
case 2:
p = "char **";
break;
default:
break;
};
break;
/* fstatat */
case 493:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "struct stat *";
break;
case 3:
p = "int";
break;
default:
break;
};
break;
/* futimesat */
case 494:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "struct timeval *";
break;
default:
break;
};
break;
/* linkat */
case 495:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
case 3:
p = "char *";
break;
case 4:
p = "int";
break;
default:
break;
};
break;
/* mkdirat */
case 496:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "mode_t";
break;
default:
break;
};
break;
/* mkfifoat */
case 497:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "mode_t";
break;
default:
break;
};
break;
/* mknodat */
case 498:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "mode_t";
break;
case 3:
p = "dev_t";
break;
default:
break;
};
break;
/* openat */
case 499:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
case 3:
p = "mode_t";
break;
default:
break;
};
break;
/* readlinkat */
case 500:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "char *";
break;
case 3:
p = "size_t";
break;
default:
break;
};
break;
/* renameat */
case 501:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
case 3:
p = "char *";
break;
default:
break;
};
break;
/* symlinkat */
case 502:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
case 2:
p = "char *";
break;
default:
break;
};
break;
/* unlinkat */
case 503:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "char *";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
Integrate the new MPSAFE TTY layer to the FreeBSD operating system. The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following: - Improved driver model: The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers. If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver. - Improved hotplugging: With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc). The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly. - Improved performance: One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters. Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING. Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
2008-08-20 08:31:58 +00:00
/* posix_openpt */
case 504:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
2008-11-03 10:39:35 +00:00
/* gssd_syscall */
case 505:
switch(ndx) {
case 0:
p = "char *";
break;
default:
break;
};
break;
/* jail_get */
case 506:
switch(ndx) {
case 0:
p = "struct iovec *";
break;
case 1:
p = "unsigned int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* jail_set */
case 507:
switch(ndx) {
case 0:
p = "struct iovec *";
break;
case 1:
p = "unsigned int";
break;
case 2:
p = "int";
break;
default:
break;
};
break;
/* jail_remove */
case 508:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
2009-06-15 20:40:23 +00:00
/* closefrom */
case 509:
switch(ndx) {
case 0:
p = "int";
break;
default:
break;
};
break;
2009-06-24 21:54:08 +00:00
/* __semctl */
case 510:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "union semun *";
break;
default:
break;
};
break;
/* msgctl */
case 511:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "struct msqid_ds *";
break;
default:
break;
};
break;
/* shmctl */
case 512:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "struct shmid_ds *";
break;
default:
break;
};
break;
/* lpathconf */
case 513:
switch(ndx) {
case 0:
p = "char *";
break;
case 1:
p = "int";
break;
default:
break;
};
break;
2009-10-27 11:01:15 +00:00
/* pselect */
case 522:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "fd_set *";
break;
case 2:
p = "fd_set *";
break;
case 3:
p = "fd_set *";
break;
case 4:
p = "const struct timespec *";
break;
case 5:
p = "const sigset_t *";
break;
default:
break;
};
break;
2008-03-27 01:55:06 +00:00
default:
break;
};
if (p != NULL)
strlcpy(desc, p, descsz);
}