/*
 * Copyright (c) 2003-2005 The Regents of The University of Michigan
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include "kern/tru64/tru64_syscalls.hh"

namespace {
    const char *
    standard_strings[SystemCalls<Tru64>::StandardNumber] = {
        "syscall",			// 0
        "exit",				// 1
        "fork",				// 2
        "read",				// 3
        "write",			// 4
        "old_open",			// 5
        "close",			// 6
        "wait4",			// 7
        "old_creat",			// 8
        "link",				// 9

        "unlink",			// 10
        "execv",			// 11
        "chdir",			// 12
        "fchdir",			// 13
        "mknod",			// 14
        "chmod",			// 15
        "chown",			// 16
        "obreak",			// 17
        "pre_F64_getfsstat",		// 18
        "lseek",			// 19

        "getpid",			// 20
        "mount",			// 21
        "unmount",			// 22
        "setuid",			// 23
        "getuid",			// 24
        "exec_with_loader",		// 25
        "ptrace",			// 26
        "recvmsg",			// 27
        "sendmsg",			// 28
        "recvfrom",			// 29

        "accept",			// 30
        "getpeername",			// 31
        "getsockname",			// 32
        "access",			// 33
        "chflags",			// 34
        "fchflags",			// 35
        "sync",				// 36
        "kill",				// 37
        "old_stat",			// 38
        "setpgid",			// 39

        "old_lstat",			// 40
        "dup",				// 41
        "pipe",				// 42
        "set_program_attributes",	// 43
        "profil",			// 44
        "open",				// 45
        "obsolete_osigaction",		// 46
        "getgid",			// 47
        "sigprocmask",			// 48
        "getlogin",			// 49

        "setlogin",			// 50
        "acct",				// 51
        "sigpending",			// 52
        "classcntl",			// 53
        "ioctl",			// 54
        "reboot",			// 55
        "revoke",			// 56
        "symlink",			// 57
        "readlink",			// 58
        "execve",			// 59

        "umask",			// 60
        "chroot",			// 61
        "old_fstat",			// 62
        "getpgrp",			// 63
        "getpagesize",			// 64
        "mremap",			// 65
        "vfork",			// 66
        "pre_F64_stat",			// 67
        "pre_F64_lstat",		// 68
        "sbrk",				// 69

        "sstk",				// 70
        "mmap",				// 71
        "ovadvise",			// 72
        "munmap",			// 73
        "mprotect",			// 74
        "madvise",			// 75
        "old_vhangup",			// 76
        "kmodcall",			// 77
        "mincore",			// 78
        "getgroups",			// 79

        "setgroups",			// 80
        "old_getpgrp",			// 81
        "setpgrp",			// 82
        "setitimer",			// 83
        "old_wait",			// 84
        "table",			// 85
        "getitimer",			// 86
        "gethostname",			// 87
        "sethostname",			// 88
        "getdtablesize",		// 89

        "dup2",				// 90
        "pre_F64_fstat",		// 91
        "fcntl",			// 92
        "select",			// 93
        "poll",				// 94
        "fsync",			// 95
        "setpriority",			// 96
        "socket",			// 97
        "connect",			// 98
        "old_accept",			// 99

        "getpriority",			// 100
        "old_send",			// 101
        "old_recv",			// 102
        "sigreturn",			// 103
        "bind",				// 104
        "setsockopt",			// 105
        "listen",			// 106
        "plock",			// 107
        "old_sigvec",			// 108
        "old_sigblock",			// 109

        "old_sigsetmask",		// 110
        "sigsuspend",			// 111
        "sigstack",			// 112
        "old_recvmsg",			// 113
        "old_sendmsg",			// 114
        "obsolete_vtrcae",		// 115
        "gettimeofday",			// 116
        "getrusage",			// 117
        "getsockopt",			// 118
        "numa_syscalls",		// 119

        "readv",			// 120
        "writev",			// 121
        "settimeofday",			// 122
        "fchown",			// 123
        "fchmod",			// 124
        "old_recvfrom",			// 125
        "setreuid",			// 126
        "setregid",			// 127
        "rename",			// 128
        "truncate",			// 129

        "ftruncate",			// 130
        "flock",			// 131
        "setgid",			// 132
        "sendto",			// 133
        "shutdown",			// 134
        "socketpair",			// 135
        "mkdir",			// 136
        "rmdir",			// 137
        "utimes",			// 138
        "obsolete_42_sigreturn",	// 139

        "adjtime",			// 140
        "old_getpeername",		// 141
        "gethostid",			// 142
        "sethostid",			// 143
        "getrlimit",			// 144
        "setrlimit",			// 145
        "old_killpg",			// 146
        "setsid",			// 147
        "quotactl",			// 148
        "oldquota",			// 149

        "old_getsockname",		// 150
        "pread",			// 151
        "pwrite",			// 152
        "pid_block",			// 153
        "pid_unblock",			// 154
        "signal_urti",			// 155
        "sigaction",			// 156
        "sigwaitprim",			// 157
        "nfssvc",			// 158
        "getdirentries",		// 159

        "pre_F64_statfs",		// 160
        "pre_F64_fstatfs",		// 161
        0,				// 162
        "async_daemon",			// 163
        "getfh",			// 164
        "getdomainname",		// 165
        "setdomainname",		// 166
        0,				// 167
        0,				// 168
        "exportfs",			// 169

        0,				// 170
        0,				// 171
        0,				// 172
        0,				// 173
        0,				// 174
        0,				// 175
        0,				// 176
        0,				// 177
        0,				// 178
        0,				// 179

        0,				// 180
        "alt_plock",			// 181
        0,				// 182
        0,				// 183
        "getmnt",			// 184
        0,				// 185
        0,				// 186
        "alt_sigpending",		// 187
        "alt_setsid",			// 188
        0,				// 189

        0,				// 190
        0,				// 191
        0,				// 192
        0,				// 193
        0,				// 194
        0,				// 195
        0,				// 196
        0,				// 197
        0,				// 198
        "swapon",			// 199

        "msgctl",			// 200
        "msgget",			// 201
        "msgrcv",			// 202
        "msgsnd",			// 203
        "semctl",			// 204
        "semget",			// 205
        "semop",			// 206
        "uname",			// 207
        "lchown",			// 208
        "shmat",			// 209

        "shmctl",			// 210
        "shmdt",			// 211
        "shmget",			// 212
        "mvalid",			// 213
        "getaddressconf",		// 214
        "msleep",			// 215
        "mwakeup",			// 216
        "msync",			// 217
        "signal",			// 218
        "utc_gettime",			// 219

        "utc_adjtime",			// 220
        0,				// 221
        "security",			// 222
        "kloadcall",			// 223
        "stat",				// 224
        "lstat",			// 225
        "fstat",			// 226
        "statfs",			// 227
        "fstatfs",			// 228
        "getfsstat",			// 229

        "gettimeofday64",		// 230
        "settimeofday64",		// 231
        0,				// 232
        "getpgid",			// 233
        "getsid",			// 234
        "sigaltstack",			// 235
        "waitid",			// 236
        "priocntlset",			// 237
        "sigsendset",			// 238
        "set_speculative",		// 239

        "msfs_syscall",			// 240
        "sysinfo",			// 241
        "uadmin",			// 242
        "fuser",			// 243
        "proplist_syscall",		// 244
        "ntp_adjtime",			// 245
        "ntp_gettime",			// 246
        "pathconf",			// 247
        "fpathconf",			// 248
        "sync2",			// 249

        "uswitch",			// 250
        "usleep_thread",		// 251
        "audcntl",			// 252
        "audgen",			// 253
        "sysfs",			// 254
        "subsys_info",			// 255
        "getsysinfo",			// 256
        "setsysinfo",			// 257
        "afs_syscall",			// 258
        "swapctl",			// 259

        "memcntl",			// 260
        "fdatasync",			// 261
        "oflock",			// 262
        "_F64_readv",			// 263
        "_F64_writev",			// 264
        "cdslxlate",			// 265
        "sendfile",			// 266
    };

    const char *
    mach_strings[SystemCalls<Tru64>::MachNumber] = {
        0,					// 0
        0,					// 1
        0,					// 2
        0,					// 3
        0,					// 4
        0,					// 5
        0,					// 6
        0,					// 7
        0,					// 8
        0,					// 9

        "task_self",				// 10
        "thread_reply",				// 11
        "task_notify",				// 12
        "thread_self",				// 13
        0,					// 14
        0,					// 15
        0,					// 16
        0,					// 17
        0,					// 18
        0,					// 19

        "msg_send_trap",			// 20
        "msg_receive_trap",			// 21
        "msg_rpc_trap",				// 22
        0,					// 23
        "nxm_block",				// 24
        "nxm_unblock",				// 25
        0,					// 26
        0,					// 27
        0,					// 28
        "nxm_thread_destroy",			// 29

        "lw_wire",				// 30
        "lw_unwire",				// 31
        "nxm_thread_create",			// 32
        "nxm_task_init",			// 33
        0,					// 34
        "nxm_idle",				// 35
        "nxm_wakeup_idle",			// 36
        "nxm_set_pthid",			// 37
        "nxm_thread_kill",			// 38
        "nxm_thread_block",			// 39

        "nxm_thread_wakeup",			// 40
        "init_process",				// 41
        "nxm_get_binding",			// 42
        "map_fd",				// 43
        "nxm_resched",				// 44
        "nxm_set_cancel",			// 45
        "nxm_set_binding",			// 46
        "stack_create",				// 47
        "nxm_get_state",			// 48
        "nxm_thread_suspend",			// 49

        "nxm_thread_resume",			// 50
        "nxm_signal_check",			// 51
        "htg_unix_syscall",			// 52
        0,					// 53
        0,					// 54
        "host_self",				// 55
        "host_priv_self",			// 56
        0,					// 57
        0,					// 58
        "swtch_pri",				// 59

        "swtch",				// 60
        "thread_switch",			// 61
        "semop_fast",				// 62
        "nxm_pshared_init",			// 63
        "nxm_pshared_block",			// 64
        "nxm_pshared_unblock",			// 65
        "nxm_pshared_destroy",			// 66
        "nxm_swtch_pri",			// 67
        "lw_syscall",				// 68
        0,					// 69

        "mach_sctimes_0",			// 70
        "mach_sctimes_1",			// 71
        "mach_sctimes_2",			// 72
        "mach_sctimes_3",			// 73
        "mach_sctimes_4",			// 74
        "mach_sctimes_5",			// 75
        "mach_sctimes_6",			// 76
        "mach_sctimes_7",			// 77
        "mach_sctimes_8",			// 78
        "mach_sctimes_9",			// 79

        "mach_sctimes_10",			// 80
        "mach_sctimes_11",			// 81
        "mach_sctimes_port_alloc_dealloc",	// 82
    };
}

const char *
SystemCalls<Tru64>::name(int num)
{
    if (num >= Number)
        return 0;
    else if (num >= StandardNumber)
        return mach_strings[num - StandardNumber];
    else if (num >= 0)
        return standard_strings[num];
    else if (num > -MachNumber)
        return mach_strings[-num];
    else
        return 0;
}
