/*
 * Copyright (c) 2003 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/linux/linux_syscalls.hh"

namespace {
    const char *
    standard_strings[SystemCalls<Linux>::StandardNumber] = {


     "llseek",		 //0
     "newselect",		 //1
     "sysctl",		 //2
     "access",		 //3
     "acct",		 //4
     "adjtimex",		 //5
     "afs_syscall",		 //6
     "alarm",		 //7
     "bdflush",		 //8
     "break",		 //9


     "brk",		 //10
     "capget",		 //11
     "capset",		 //12
     "chdir",		 //13
     "chmod",		 //14
     "chown",		 //15
     "chown32",		 //16
     "chroot",		 //17
     "clock_getres",		 //18
     "clock_gettime",		 //19


     "clock_nanosleep",		 //20
     "clock_settime",		 //21
     "clone",		 //22
     "close",		 //23
     "creat",		 //24
     "create_module",		 //25
     "delete_module",		 //26
     "dup",		 //27
     "dup2",		 //28
     "epoll_create",		 //29


     "epoll_ctl",		 //30
     "epoll_wait",		 //31
     "execve",		 //32
     "exit",		 //33
     "exit_group",		 //34
     "fadvise64",		 //35
     "fadvise64_64",		 //36
     "fchdir",		 //37
     "fchmod",		 //38
     "fchown",		 //39


     "fchown32",		 //40
     "fcntl",		 //41
     "fcntl64",		 //42
     "fdatasync",		 //43
     "fgetxattr",		 //44
     "flistxattr",		 //45
     "flock",		 //46
     "fork",		 //47
     "fremovexattr",		 //48
     "fsetxattr",		 //49


     "fstat",		 //50
     "fstat64",		 //51
     "fstatfs",		 //52
     "fstatfs64",		 //53
     "fsync",		 //54
     "ftime",		 //55
     "ftruncate",		 //56
     "ftruncate64",		 //57
     "futex",		 //58
     "get_kernel_syms",		 //59


     "get_thread_area",		 //60
     "getcwd",		 //61
     "getdents",		 //62
     "getdents64",		 //63
     "getegid",		 //64
     "getegid32",		 //65
     "geteuid",		 //66
     "geteuid32",		 //67
     "getgid",		 //68
     "getgid32",		 //69


     "getgroups",		 //70
     "getgroups32",		 //71
     "getitimer",		 //72
     "getpgid",		 //73
     "getpgrp",		 //74
     "getpid",		 //75
     "getpmsg",		 //76
     "getppid",		 //77
     "getpriority",		 //78
     "getresgid",		 //79


     "getresgid32",		 //80
     "getresuid",		 //81
     "getresuid32",		 //82
     "getrlimit",		 //83
     "getrusage",		 //84
     "getsid",		 //85
     "gettid",		 //86
     "gettimeofday",		 //87
     "getuid",		 //88
     "getuid32",		 //89


     "getxattr",		 //90
     "gtty",		 //91
     "idle",		 //92
     "init_module",		 //93
     "io_cancel",		 //94
     "io_destroy",		 //95
     "io_getevents",		 //96
     "io_setup",		 //97
     "io_submit",		 //98
     "ioctl",		 //99


     "ioperm",		 //100
     "iopl",		 //101
     "ipc",		 //102
     "kill",		 //103
     "lchown",		 //104
     "lchown32",		 //105
     "lgetxattr",		 //106
     "link",		 //107
     "listxattr",		 //108
     "llistxattr",		 //109


     "lock",		 //110
     "lookup_dcookie",		 //111
     "lremovexattr",		 //112
     "lseek",		 //113
     "lsetxattr",		 //114
     "lstat",		 //115
     "lstat64",		 //116
     "madvise",		 //117
     "madvise1",		 //118
     "mincore",		 //119


     "mkdir",		 //120
     "mknod",		 //121
     "mlock",		 //122
     "mlockall",		 //123
     "mmap",		 //124
     "mmap2",		 //125
     "modify_ldt",		 //126
     "mount",		 //127
     "mprotect",		 //128
     "mpx",		 //129


     "mremap",		 //130
     "msync",		 //131
     "munlock",		 //132
     "munlockall",		 //133
     "munmap",		 //134
     "nanosleep",		 //135
     "nfsservctl",		 //136
     "nice",		 //137
     "oldfstat",		 //138
     "oldlstat",		 //139


     "oldolduname",		 //140
     "oldstat",		 //141
     "olduname",		 //142
     "open",		 //143
     "pause",		 //144
     "personality",		 //145
     "pipe",		 //146
     "pivot_root",		 //147
     "poll",		 //148
     "prctl",		 //149


     "pread64",		 //150
     "prof",		 //151
     "profil",		 //152
     "ptrace",		 //153
     "putpmsg",		 //154
     "pwrite64",		 //155
     "query_module",		 //156
     "quotactl",		 //157
     "read",		 //158
     "readahead",		 //159


     "readdir",		 //160
     "readlink",		 //161
     "readv",		 //162
     "reboot",		 //163
     "remap_file_pages",		 //164
     "removexattr",		 //165
     "rename",		 //166
     "restart_syscall",		 //167
     "rmdir",		 //168
     "rt_sigaction",		 //169


     "rt_sigpending",		 //170
     "rt_sigprocmask",		 //171
     "rt_sigqueueinfo",		 //172
     "rt_sigreturn",		 //173
     "rt_sigsuspend",		 //174
     "rt_sigtimedwait",		 //175
     "sched_get_priority_max",		 //176
     "sched_get_priority_min",		 //177
     "sched_getaffinity",		 //178
     "sched_getparam",		 //179


     "sched_getscheduler",		 //180
     "sched_rr_get_interval",		 //181
     "sched_setaffinity",		 //182
     "sched_setparam",		 //183
     "sched_setscheduler",		 //184
     "sched_yield",		 //185
     "select",		 //186
     "sendfile",		 //187
     "sendfile64",		 //188
     "set_thread_area",		 //189


     "set_tid_address",		 //190
     "setdomainname",		 //191
     "setfsgid",		 //192
     "setfsgid32",		 //193
     "setfsuid",		 //194
     "setfsuid32",		 //195
     "setgid",		 //196
     "setgid32",		 //197
     "setgroups",		 //198
     "setgroups32",		 //199


     "sethostname",		 //200
     "setitimer",		 //201
     "setpgid",		 //202
     "setpriority",		 //203
     "setregid",		 //204
     "setregid32",		 //205
     "setresgid",		 //206
     "setresgid32",		 //207
     "setresuid",		 //208
     "setresuid32",		 //209


     "setreuid",		 //210
     "setreuid32",		 //211
     "setrlimit",		 //212
     "setsid",		 //213
     "settimeofday",		 //214
     "setuid",		 //215
     "setuid32",		 //216
     "setxattr",		 //217
     "sgetmask",		 //218
     "sigaction",		 //219


     "sigaltstack",		 //220
     "signal",		 //221
     "sigpending",		 //222
     "sigprocmask",		 //223
     "sigreturn",		 //224
     "sigsuspend",		 //225
     "socketcall",		 //226
     "ssetmask",		 //227
     "stat",		 //228
     "stat64",		 //229


     "statfs",		 //230
     "statfs64",		 //231
     "stime",		 //232
     "stty",		 //233
     "swapoff",		 //234
     "swapon",		 //235
     "symlink",		 //236
     "sync",		 //237
     "sysfs",		 //238
     "sysinfo",		 //239


     "syslog",		 //240
     "tgkill",		 //241
     "time",		 //242
     "timer_create",		 //243
     "timer_delete",		 //244
     "timer_getoverrun",		 //245
     "timer_gettime",		 //246
     "timer_settime",		 //247
     "times",		 //248
     "tkill",		 //249


     "truncate",		 //250
     "truncate64",		 //251
     "ugetrlimit",		 //252
     "ulimit",		 //253
     "umask",		 //254
     "umount",		 //255
     "umount2",		 //256
     "uname",		 //257
     "unlink",		 //258
     "uselib",		 //259


     "ustat",		 //260
     "utime",		 //261
     "utimes",		 //262
     "vfork",		 //263
     "vhangup",		 //264
     "vm86",		 //265
     "vm86old",		 //266
     "vserver",		 //267
     "wait4",		 //268
     "waitpid",		 //269


     "write",		 //270
     "writev",		 //271
    };


}

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