process.cc revision 12297
111723Sar4jc@virginia.edu/* 211723Sar4jc@virginia.edu * Copyright (c) 2005 The Regents of The University of Michigan 311723Sar4jc@virginia.edu * Copyright (c) 2007 MIPS Technologies, Inc. 411723Sar4jc@virginia.edu * Copyright (c) 2016 The University of Virginia 511723Sar4jc@virginia.edu * All rights reserved. 611723Sar4jc@virginia.edu * 711723Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without 811723Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are 911723Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright 1011723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer; 1111723Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright 1211723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the 1311723Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution; 1411723Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its 1511723Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from 1611723Sar4jc@virginia.edu * this software without specific prior written permission. 1711723Sar4jc@virginia.edu * 1811723Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1911723Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2011723Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2111723Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2211723Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2311723Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2411723Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2511723Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2611723Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2711723Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2811723Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2911723Sar4jc@virginia.edu * 3011723Sar4jc@virginia.edu * Authors: Gabe Black 3111723Sar4jc@virginia.edu * Korey Sewell 3211723Sar4jc@virginia.edu * Alec Roelke 3311723Sar4jc@virginia.edu */ 3411723Sar4jc@virginia.edu 3511723Sar4jc@virginia.edu#include "arch/riscv/linux/process.hh" 3611723Sar4jc@virginia.edu 3711723Sar4jc@virginia.edu#include <map> 3811723Sar4jc@virginia.edu 3911723Sar4jc@virginia.edu#include "arch/riscv/isa_traits.hh" 4011723Sar4jc@virginia.edu#include "arch/riscv/linux/linux.hh" 4111723Sar4jc@virginia.edu#include "base/trace.hh" 4211723Sar4jc@virginia.edu#include "cpu/thread_context.hh" 4311723Sar4jc@virginia.edu#include "debug/SyscallVerbose.hh" 4411723Sar4jc@virginia.edu#include "kern/linux/linux.hh" 4511723Sar4jc@virginia.edu#include "sim/eventq.hh" 4611723Sar4jc@virginia.edu#include "sim/process.hh" 4711794Sbrandon.potter@amd.com#include "sim/syscall_desc.hh" 4811723Sar4jc@virginia.edu#include "sim/syscall_emul.hh" 4911723Sar4jc@virginia.edu#include "sim/system.hh" 5011723Sar4jc@virginia.edu 5111723Sar4jc@virginia.eduusing namespace std; 5211723Sar4jc@virginia.eduusing namespace RiscvISA; 5311723Sar4jc@virginia.edu 5411723Sar4jc@virginia.edu/// Target uname() handler. 5511723Sar4jc@virginia.edustatic SyscallReturn 5611851Sbrandon.potter@amd.comunameFunc(SyscallDesc *desc, int callnum, Process *process, 5711723Sar4jc@virginia.edu ThreadContext *tc) 5811723Sar4jc@virginia.edu{ 5911723Sar4jc@virginia.edu int index = 0; 6011723Sar4jc@virginia.edu TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index)); 6111723Sar4jc@virginia.edu 6211723Sar4jc@virginia.edu strcpy(name->sysname, "Linux"); 6311723Sar4jc@virginia.edu strcpy(name->nodename,"sim.gem5.org"); 6411723Sar4jc@virginia.edu strcpy(name->release, "3.0.0"); 6511723Sar4jc@virginia.edu strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 6611723Sar4jc@virginia.edu strcpy(name->machine, "riscv"); 6711723Sar4jc@virginia.edu 6811723Sar4jc@virginia.edu name.copyOut(tc->getMemProxy()); 6911723Sar4jc@virginia.edu return 0; 7011723Sar4jc@virginia.edu} 7111723Sar4jc@virginia.edu 7211723Sar4jc@virginia.edustd::map<int, SyscallDesc> RiscvLinuxProcess::syscallDescs = { 7312297Sar4jc@virginia.edu {0, SyscallDesc("io_setup")}, 7412297Sar4jc@virginia.edu {1, SyscallDesc("io_destroy")}, 7512297Sar4jc@virginia.edu {2, SyscallDesc("io_submit")}, 7612297Sar4jc@virginia.edu {3, SyscallDesc("io_cancel")}, 7712297Sar4jc@virginia.edu {4, SyscallDesc("io_getevents")}, 7812297Sar4jc@virginia.edu {5, SyscallDesc("setxattr")}, 7912297Sar4jc@virginia.edu {6, SyscallDesc("lsetxattr")}, 8012297Sar4jc@virginia.edu {7, SyscallDesc("fsetxattr")}, 8112297Sar4jc@virginia.edu {8, SyscallDesc("getxattr")}, 8212297Sar4jc@virginia.edu {9, SyscallDesc("lgetxattr")}, 8312297Sar4jc@virginia.edu {10, SyscallDesc("fgetxattr")}, 8412297Sar4jc@virginia.edu {11, SyscallDesc("listxattr")}, 8512297Sar4jc@virginia.edu {12, SyscallDesc("llistxattr")}, 8612297Sar4jc@virginia.edu {13, SyscallDesc("flistxattr")}, 8712297Sar4jc@virginia.edu {14, SyscallDesc("removexattr")}, 8812297Sar4jc@virginia.edu {15, SyscallDesc("lremovexattr")}, 8912297Sar4jc@virginia.edu {16, SyscallDesc("fremovexattr")}, 9012297Sar4jc@virginia.edu {17, SyscallDesc("getcwd", getcwdFunc)}, 9112297Sar4jc@virginia.edu {18, SyscallDesc("lookup_dcookie")}, 9212297Sar4jc@virginia.edu {19, SyscallDesc("eventfd2")}, 9312297Sar4jc@virginia.edu {20, SyscallDesc("epoll_create1")}, 9412297Sar4jc@virginia.edu {21, SyscallDesc("epoll_ctl")}, 9512297Sar4jc@virginia.edu {22, SyscallDesc("epoll_pwait")}, 9612297Sar4jc@virginia.edu {23, SyscallDesc("dup", dupFunc)}, 9712297Sar4jc@virginia.edu {24, SyscallDesc("dup3")}, 9812297Sar4jc@virginia.edu {25, SyscallDesc("fcntl", fcntl64Func)}, 9912297Sar4jc@virginia.edu {26, SyscallDesc("inotify_init1")}, 10012297Sar4jc@virginia.edu {27, SyscallDesc("inotify_add_watch")}, 10112297Sar4jc@virginia.edu {28, SyscallDesc("inotify_rm_watch")}, 10212297Sar4jc@virginia.edu {29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux>)}, 10312297Sar4jc@virginia.edu {30, SyscallDesc("ioprio_get")}, 10412297Sar4jc@virginia.edu {31, SyscallDesc("ioprio_set")}, 10512297Sar4jc@virginia.edu {32, SyscallDesc("flock")}, 10612297Sar4jc@virginia.edu {33, SyscallDesc("mknodat")}, 10712297Sar4jc@virginia.edu {34, SyscallDesc("mkdirat")}, 10812297Sar4jc@virginia.edu {35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux>)}, 10912297Sar4jc@virginia.edu {36, SyscallDesc("symlinkat")}, 11012297Sar4jc@virginia.edu {37, SyscallDesc("linkat")}, 11112297Sar4jc@virginia.edu {38, SyscallDesc("renameat", renameatFunc<RiscvLinux>)}, 11212297Sar4jc@virginia.edu {39, SyscallDesc("umount2")}, 11312297Sar4jc@virginia.edu {40, SyscallDesc("mount")}, 11412297Sar4jc@virginia.edu {41, SyscallDesc("pivot_root")}, 11512297Sar4jc@virginia.edu {42, SyscallDesc("nfsservctl")}, 11612297Sar4jc@virginia.edu {43, SyscallDesc("statfs", statfsFunc<RiscvLinux>)}, 11712297Sar4jc@virginia.edu {44, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux>)}, 11812297Sar4jc@virginia.edu {45, SyscallDesc("truncate", truncateFunc)}, 11912297Sar4jc@virginia.edu {46, SyscallDesc("ftruncate", ftruncate64Func)}, 12012297Sar4jc@virginia.edu {47, SyscallDesc("fallocate", fallocateFunc)}, 12112297Sar4jc@virginia.edu {48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux>)}, 12212297Sar4jc@virginia.edu {49, SyscallDesc("chdir")}, 12312297Sar4jc@virginia.edu {50, SyscallDesc("fchdir")}, 12412297Sar4jc@virginia.edu {51, SyscallDesc("chroot")}, 12512297Sar4jc@virginia.edu {52, SyscallDesc("fchmod", fchmodFunc<RiscvLinux>)}, 12612297Sar4jc@virginia.edu {53, SyscallDesc("fchmodat")}, 12712297Sar4jc@virginia.edu {54, SyscallDesc("fchownat")}, 12812297Sar4jc@virginia.edu {55, SyscallDesc("fchown", fchownFunc)}, 12912297Sar4jc@virginia.edu {56, SyscallDesc("openat", openatFunc<RiscvLinux>)}, 13012297Sar4jc@virginia.edu {57, SyscallDesc("close", closeFunc)}, 13112297Sar4jc@virginia.edu {58, SyscallDesc("vhangup")}, 13212297Sar4jc@virginia.edu {59, SyscallDesc("pipe2")}, 13312297Sar4jc@virginia.edu {60, SyscallDesc("quotactl")}, 13412297Sar4jc@virginia.edu {61, SyscallDesc("getdents64")}, 13512297Sar4jc@virginia.edu {62, SyscallDesc("lseek", lseekFunc)}, 13612297Sar4jc@virginia.edu {63, SyscallDesc("read", readFunc)}, 13712297Sar4jc@virginia.edu {64, SyscallDesc("write", writeFunc)}, 13812297Sar4jc@virginia.edu {66, SyscallDesc("writev", writevFunc<RiscvLinux>)}, 13912297Sar4jc@virginia.edu {67, SyscallDesc("pread64")}, 14012297Sar4jc@virginia.edu {68, SyscallDesc("pwrite64", pwrite64Func<RiscvLinux>)}, 14112297Sar4jc@virginia.edu {69, SyscallDesc("preadv")}, 14212297Sar4jc@virginia.edu {70, SyscallDesc("pwritev")}, 14312297Sar4jc@virginia.edu {71, SyscallDesc("sendfile")}, 14412297Sar4jc@virginia.edu {72, SyscallDesc("pselect6")}, 14512297Sar4jc@virginia.edu {73, SyscallDesc("ppoll")}, 14612297Sar4jc@virginia.edu {74, SyscallDesc("signalfd64")}, 14712297Sar4jc@virginia.edu {75, SyscallDesc("vmsplice")}, 14812297Sar4jc@virginia.edu {76, SyscallDesc("splice")}, 14912297Sar4jc@virginia.edu {77, SyscallDesc("tee")}, 15012297Sar4jc@virginia.edu {78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux>)}, 15112297Sar4jc@virginia.edu {79, SyscallDesc("fstatat", fstatat64Func<RiscvLinux>)}, 15212297Sar4jc@virginia.edu {80, SyscallDesc("fstat", fstat64Func<RiscvLinux>)}, 15312297Sar4jc@virginia.edu {81, SyscallDesc("sync")}, 15412297Sar4jc@virginia.edu {82, SyscallDesc("fsync")}, 15512297Sar4jc@virginia.edu {83, SyscallDesc("fdatasync")}, 15612297Sar4jc@virginia.edu {84, SyscallDesc("sync_file_range2")}, 15712297Sar4jc@virginia.edu {85, SyscallDesc("timerfd_create")}, 15812297Sar4jc@virginia.edu {86, SyscallDesc("timerfd_settime")}, 15912297Sar4jc@virginia.edu {87, SyscallDesc("timerfd_gettime")}, 16012297Sar4jc@virginia.edu {88, SyscallDesc("utimensat")}, 16112297Sar4jc@virginia.edu {89, SyscallDesc("acct")}, 16212297Sar4jc@virginia.edu {90, SyscallDesc("capget")}, 16312297Sar4jc@virginia.edu {91, SyscallDesc("capset")}, 16412297Sar4jc@virginia.edu {92, SyscallDesc("personality")}, 16512297Sar4jc@virginia.edu {93, SyscallDesc("exit", exitFunc)}, 16612297Sar4jc@virginia.edu {94, SyscallDesc("exit_group", exitGroupFunc)}, 16712297Sar4jc@virginia.edu {95, SyscallDesc("waitid")}, 16812297Sar4jc@virginia.edu {96, SyscallDesc("set_tid_address")}, 16912297Sar4jc@virginia.edu {97, SyscallDesc("unshare")}, 17012297Sar4jc@virginia.edu {98, SyscallDesc("futex", futexFunc<RiscvLinux>)}, 17112297Sar4jc@virginia.edu {99, SyscallDesc("set_robust_list")}, 17212297Sar4jc@virginia.edu {100, SyscallDesc("get_robust_list")}, 17312297Sar4jc@virginia.edu {101, SyscallDesc("nanosleep")}, 17412297Sar4jc@virginia.edu {102, SyscallDesc("getitimer")}, 17512297Sar4jc@virginia.edu {103, SyscallDesc("setitimer")}, 17612297Sar4jc@virginia.edu {104, SyscallDesc("kexec_load")}, 17712297Sar4jc@virginia.edu {105, SyscallDesc("init_module")}, 17812297Sar4jc@virginia.edu {106, SyscallDesc("delete_module")}, 17912297Sar4jc@virginia.edu {107, SyscallDesc("timer_create")}, 18012297Sar4jc@virginia.edu {108, SyscallDesc("timer_gettime")}, 18112297Sar4jc@virginia.edu {109, SyscallDesc("timer_getoverrun")}, 18212297Sar4jc@virginia.edu {110, SyscallDesc("timer_settime")}, 18312297Sar4jc@virginia.edu {111, SyscallDesc("timer_delete")}, 18412297Sar4jc@virginia.edu {112, SyscallDesc("clock_settime")}, 18512297Sar4jc@virginia.edu {113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux>)}, 18612297Sar4jc@virginia.edu {114, SyscallDesc("clock_getres", clock_getresFunc<RiscvLinux>)}, 18712297Sar4jc@virginia.edu {115, SyscallDesc("clock_nanosleep")}, 18812297Sar4jc@virginia.edu {116, SyscallDesc("syslog")}, 18912297Sar4jc@virginia.edu {117, SyscallDesc("ptrace")}, 19012297Sar4jc@virginia.edu {118, SyscallDesc("sched_setparam")}, 19112297Sar4jc@virginia.edu {119, SyscallDesc("sched_setscheduler")}, 19212297Sar4jc@virginia.edu {120, SyscallDesc("sched_getscheduler")}, 19312297Sar4jc@virginia.edu {121, SyscallDesc("sched_getparam")}, 19412297Sar4jc@virginia.edu {122, SyscallDesc("sched_setaffinity")}, 19512297Sar4jc@virginia.edu {123, SyscallDesc("sched_getaffinity")}, 19612297Sar4jc@virginia.edu {124, SyscallDesc("sched_yield")}, 19712297Sar4jc@virginia.edu {125, SyscallDesc("sched_get_priority_max")}, 19812297Sar4jc@virginia.edu {126, SyscallDesc("sched_get_priority_min")}, 19912297Sar4jc@virginia.edu {127, SyscallDesc("scheD_rr_get_interval")}, 20012297Sar4jc@virginia.edu {128, SyscallDesc("restart_syscall")}, 20112297Sar4jc@virginia.edu {129, SyscallDesc("kill")}, 20212297Sar4jc@virginia.edu {130, SyscallDesc("tkill")}, 20312297Sar4jc@virginia.edu {131, SyscallDesc("tgkill", tgkillFunc<RiscvLinux>)}, 20412297Sar4jc@virginia.edu {132, SyscallDesc("sigaltstack")}, 20512297Sar4jc@virginia.edu {133, SyscallDesc("rt_sigsuspend", ignoreFunc, SyscallDesc::WarnOnce)}, 20612297Sar4jc@virginia.edu {134, SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce)}, 20712297Sar4jc@virginia.edu {135, SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce)}, 20812297Sar4jc@virginia.edu {136, SyscallDesc("rt_sigpending", ignoreFunc, SyscallDesc::WarnOnce)}, 20912297Sar4jc@virginia.edu {137, SyscallDesc("rt_sigtimedwait", ignoreFunc,SyscallDesc::WarnOnce)}, 21012297Sar4jc@virginia.edu {138, SyscallDesc("rt_sigqueueinfo", ignoreFunc,SyscallDesc::WarnOnce)}, 21112297Sar4jc@virginia.edu {139, SyscallDesc("rt_sigreturn", ignoreFunc, SyscallDesc::WarnOnce)}, 21212297Sar4jc@virginia.edu {140, SyscallDesc("setpriority")}, 21312297Sar4jc@virginia.edu {141, SyscallDesc("getpriority")}, 21412297Sar4jc@virginia.edu {142, SyscallDesc("reboot")}, 21512297Sar4jc@virginia.edu {143, SyscallDesc("setregid")}, 21612297Sar4jc@virginia.edu {144, SyscallDesc("setgid")}, 21712297Sar4jc@virginia.edu {145, SyscallDesc("setreuid")}, 21812297Sar4jc@virginia.edu {146, SyscallDesc("setuid", setuidFunc)}, 21912297Sar4jc@virginia.edu {147, SyscallDesc("setresuid")}, 22012297Sar4jc@virginia.edu {148, SyscallDesc("getresuid")}, 22112297Sar4jc@virginia.edu {149, SyscallDesc("getresgid")}, 22212297Sar4jc@virginia.edu {150, SyscallDesc("getresgid")}, 22312297Sar4jc@virginia.edu {151, SyscallDesc("setfsuid")}, 22412297Sar4jc@virginia.edu {152, SyscallDesc("setfsgid")}, 22512297Sar4jc@virginia.edu {153, SyscallDesc("times", timesFunc<RiscvLinux>)}, 22612297Sar4jc@virginia.edu {154, SyscallDesc("setpgid", setpgidFunc)}, 22712297Sar4jc@virginia.edu {155, SyscallDesc("getpgid")}, 22812297Sar4jc@virginia.edu {156, SyscallDesc("getsid")}, 22912297Sar4jc@virginia.edu {157, SyscallDesc("setsid")}, 23012297Sar4jc@virginia.edu {158, SyscallDesc("getgroups")}, 23112297Sar4jc@virginia.edu {159, SyscallDesc("setgroups")}, 23212297Sar4jc@virginia.edu {160, SyscallDesc("uname", unameFunc)}, 23312297Sar4jc@virginia.edu {161, SyscallDesc("sethostname")}, 23412297Sar4jc@virginia.edu {162, SyscallDesc("setdomainname")}, 23512297Sar4jc@virginia.edu {163, SyscallDesc("getrlimit", getrlimitFunc<RiscvLinux>)}, 23612297Sar4jc@virginia.edu {164, SyscallDesc("setrlimit", ignoreFunc)}, 23712297Sar4jc@virginia.edu {165, SyscallDesc("getrusage", getrusageFunc<RiscvLinux>)}, 23812297Sar4jc@virginia.edu {166, SyscallDesc("umask", umaskFunc)}, 23912297Sar4jc@virginia.edu {167, SyscallDesc("prctl")}, 24012297Sar4jc@virginia.edu {168, SyscallDesc("getcpu")}, 24112297Sar4jc@virginia.edu {169, SyscallDesc("gettimeofday", gettimeofdayFunc<RiscvLinux>)}, 24212297Sar4jc@virginia.edu {170, SyscallDesc("settimeofday")}, 24312297Sar4jc@virginia.edu {171, SyscallDesc("adjtimex")}, 24412297Sar4jc@virginia.edu {172, SyscallDesc("getpid", getpidFunc)}, 24512297Sar4jc@virginia.edu {173, SyscallDesc("getppid", getppidFunc)}, 24612297Sar4jc@virginia.edu {174, SyscallDesc("getuid", getuidFunc)}, 24712297Sar4jc@virginia.edu {175, SyscallDesc("geteuid", geteuidFunc)}, 24812297Sar4jc@virginia.edu {176, SyscallDesc("getgid", getgidFunc)}, 24912297Sar4jc@virginia.edu {177, SyscallDesc("getegid", getegidFunc)}, 25012297Sar4jc@virginia.edu {178, SyscallDesc("gettid", gettidFunc)}, 25112297Sar4jc@virginia.edu {179, SyscallDesc("sysinfo", sysinfoFunc<RiscvLinux>)}, 25212297Sar4jc@virginia.edu {180, SyscallDesc("mq_open")}, 25312297Sar4jc@virginia.edu {181, SyscallDesc("mq_unlink")}, 25412297Sar4jc@virginia.edu {182, SyscallDesc("mq_timedsend")}, 25512297Sar4jc@virginia.edu {183, SyscallDesc("mq_timedrecieve")}, 25612297Sar4jc@virginia.edu {184, SyscallDesc("mq_notify")}, 25712297Sar4jc@virginia.edu {185, SyscallDesc("mq_getsetattr")}, 25812297Sar4jc@virginia.edu {186, SyscallDesc("msgget")}, 25912297Sar4jc@virginia.edu {187, SyscallDesc("msgctl")}, 26012297Sar4jc@virginia.edu {188, SyscallDesc("msgrcv")}, 26112297Sar4jc@virginia.edu {189, SyscallDesc("msgsnd")}, 26212297Sar4jc@virginia.edu {190, SyscallDesc("semget")}, 26312297Sar4jc@virginia.edu {191, SyscallDesc("semctl")}, 26412297Sar4jc@virginia.edu {192, SyscallDesc("semtimedop")}, 26512297Sar4jc@virginia.edu {193, SyscallDesc("semop")}, 26612297Sar4jc@virginia.edu {194, SyscallDesc("shmget")}, 26712297Sar4jc@virginia.edu {195, SyscallDesc("shmctl")}, 26812297Sar4jc@virginia.edu {196, SyscallDesc("shmat")}, 26912297Sar4jc@virginia.edu {197, SyscallDesc("shmdt")}, 27012297Sar4jc@virginia.edu {198, SyscallDesc("socket")}, 27112297Sar4jc@virginia.edu {199, SyscallDesc("socketpair")}, 27212297Sar4jc@virginia.edu {200, SyscallDesc("bind")}, 27312297Sar4jc@virginia.edu {201, SyscallDesc("listen")}, 27412297Sar4jc@virginia.edu {202, SyscallDesc("accept")}, 27512297Sar4jc@virginia.edu {203, SyscallDesc("connect")}, 27612297Sar4jc@virginia.edu {204, SyscallDesc("getsockname")}, 27712297Sar4jc@virginia.edu {205, SyscallDesc("getpeername")}, 27812297Sar4jc@virginia.edu {206, SyscallDesc("sendo")}, 27912297Sar4jc@virginia.edu {207, SyscallDesc("recvfrom")}, 28012297Sar4jc@virginia.edu {208, SyscallDesc("setsockopt")}, 28112297Sar4jc@virginia.edu {209, SyscallDesc("getsockopt")}, 28212297Sar4jc@virginia.edu {210, SyscallDesc("shutdown")}, 28312297Sar4jc@virginia.edu {211, SyscallDesc("sendmsg")}, 28412297Sar4jc@virginia.edu {212, SyscallDesc("recvmsg")}, 28512297Sar4jc@virginia.edu {213, SyscallDesc("readahead")}, 28612297Sar4jc@virginia.edu {214, SyscallDesc("brk", brkFunc)}, 28712297Sar4jc@virginia.edu {215, SyscallDesc("munmap", munmapFunc)}, 28812297Sar4jc@virginia.edu {216, SyscallDesc("mremap", mremapFunc<RiscvLinux>)}, 28912297Sar4jc@virginia.edu {217, SyscallDesc("add_key")}, 29012297Sar4jc@virginia.edu {218, SyscallDesc("request_key")}, 29112297Sar4jc@virginia.edu {219, SyscallDesc("keyctl")}, 29212297Sar4jc@virginia.edu {220, SyscallDesc("clone", cloneFunc<RiscvLinux>)}, 29312297Sar4jc@virginia.edu {221, SyscallDesc("execve", execveFunc<RiscvLinux>)}, 29412297Sar4jc@virginia.edu {222, SyscallDesc("mmap", mmapFunc<RiscvLinux>)}, 29512297Sar4jc@virginia.edu {223, SyscallDesc("fadvise64")}, 29612297Sar4jc@virginia.edu {224, SyscallDesc("swapon")}, 29712297Sar4jc@virginia.edu {225, SyscallDesc("swapoff")}, 29812297Sar4jc@virginia.edu {226, SyscallDesc("mprotect", ignoreFunc)}, 29912297Sar4jc@virginia.edu {227, SyscallDesc("msync", ignoreFunc)}, 30012297Sar4jc@virginia.edu {228, SyscallDesc("mlock", ignoreFunc)}, 30112297Sar4jc@virginia.edu {229, SyscallDesc("munlock", ignoreFunc)}, 30212297Sar4jc@virginia.edu {230, SyscallDesc("mlockall", ignoreFunc)}, 30312297Sar4jc@virginia.edu {231, SyscallDesc("munlockall", ignoreFunc)}, 30412297Sar4jc@virginia.edu {232, SyscallDesc("mincore", ignoreFunc)}, 30512297Sar4jc@virginia.edu {233, SyscallDesc("madvise", ignoreFunc)}, 30612297Sar4jc@virginia.edu {234, SyscallDesc("remap_file_pages")}, 30712297Sar4jc@virginia.edu {235, SyscallDesc("mbind", ignoreFunc)}, 30812297Sar4jc@virginia.edu {236, SyscallDesc("get_mempolicy")}, 30912297Sar4jc@virginia.edu {237, SyscallDesc("set_mempolicy")}, 31012297Sar4jc@virginia.edu {238, SyscallDesc("migrate_pages")}, 31112297Sar4jc@virginia.edu {239, SyscallDesc("move_pages")}, 31212297Sar4jc@virginia.edu {240, SyscallDesc("tgsigqueueinfo")}, 31312297Sar4jc@virginia.edu {241, SyscallDesc("perf_event_open")}, 31412297Sar4jc@virginia.edu {242, SyscallDesc("accept4")}, 31512297Sar4jc@virginia.edu {243, SyscallDesc("recvmmsg")}, 31612297Sar4jc@virginia.edu {260, SyscallDesc("wait4")}, 31712297Sar4jc@virginia.edu {261, SyscallDesc("prlimit64", prlimitFunc<RiscvLinux>)}, 31812297Sar4jc@virginia.edu {262, SyscallDesc("fanotify_init")}, 31912297Sar4jc@virginia.edu {263, SyscallDesc("fanotify_mark")}, 32012297Sar4jc@virginia.edu {264, SyscallDesc("name_to_handle_at")}, 32112297Sar4jc@virginia.edu {265, SyscallDesc("open_by_handle_at")}, 32212297Sar4jc@virginia.edu {266, SyscallDesc("clock_adjtime")}, 32312297Sar4jc@virginia.edu {267, SyscallDesc("syncfs")}, 32412297Sar4jc@virginia.edu {268, SyscallDesc("setns")}, 32512297Sar4jc@virginia.edu {269, SyscallDesc("sendmmsg")}, 32612297Sar4jc@virginia.edu {270, SyscallDesc("process_vm_ready")}, 32712297Sar4jc@virginia.edu {271, SyscallDesc("process_vm_writev")}, 32812297Sar4jc@virginia.edu {272, SyscallDesc("kcmp")}, 32912297Sar4jc@virginia.edu {273, SyscallDesc("finit_module")}, 33012297Sar4jc@virginia.edu {274, SyscallDesc("sched_setattr")}, 33112297Sar4jc@virginia.edu {275, SyscallDesc("sched_getattr")}, 33212297Sar4jc@virginia.edu {276, SyscallDesc("renameat2")}, 33312297Sar4jc@virginia.edu {277, SyscallDesc("seccomp")}, 33412297Sar4jc@virginia.edu {278, SyscallDesc("getrandom")}, 33512297Sar4jc@virginia.edu {279, SyscallDesc("memfd_create")}, 33612297Sar4jc@virginia.edu {280, SyscallDesc("bpf")}, 33712297Sar4jc@virginia.edu {281, SyscallDesc("execveat")}, 33812297Sar4jc@virginia.edu {282, SyscallDesc("userfaultid")}, 33912297Sar4jc@virginia.edu {283, SyscallDesc("membarrier")}, 34012297Sar4jc@virginia.edu {284, SyscallDesc("mlock2")}, 34112297Sar4jc@virginia.edu {285, SyscallDesc("copy_file_range")}, 34212297Sar4jc@virginia.edu {286, SyscallDesc("preadv2")}, 34312297Sar4jc@virginia.edu {287, SyscallDesc("pwritev2")}, 34411723Sar4jc@virginia.edu {1024, SyscallDesc("open", openFunc<RiscvLinux>)}, 34512297Sar4jc@virginia.edu {1025, SyscallDesc("link")}, 34611723Sar4jc@virginia.edu {1026, SyscallDesc("unlink", unlinkFunc)}, 34712297Sar4jc@virginia.edu {1027, SyscallDesc("mknod")}, 34812297Sar4jc@virginia.edu {1028, SyscallDesc("chmod", chmodFunc<RiscvLinux>)}, 34912297Sar4jc@virginia.edu {1029, SyscallDesc("chown", chownFunc)}, 35011723Sar4jc@virginia.edu {1030, SyscallDesc("mkdir", mkdirFunc)}, 35112297Sar4jc@virginia.edu {1031, SyscallDesc("rmdir")}, 35212297Sar4jc@virginia.edu {1032, SyscallDesc("lchown")}, 35311723Sar4jc@virginia.edu {1033, SyscallDesc("access", accessFunc)}, 35412297Sar4jc@virginia.edu {1034, SyscallDesc("rename", renameFunc)}, 35512297Sar4jc@virginia.edu {1035, SyscallDesc("readlink", readlinkFunc)}, 35612297Sar4jc@virginia.edu {1036, SyscallDesc("symlink")}, 35712297Sar4jc@virginia.edu {1037, SyscallDesc("utimes", utimesFunc<RiscvLinux>)}, 35811728Sar4jc@virginia.edu {1038, SyscallDesc("stat", stat64Func<RiscvLinux>)}, 35911728Sar4jc@virginia.edu {1039, SyscallDesc("lstat", lstat64Func<RiscvLinux>)}, 36012297Sar4jc@virginia.edu {1040, SyscallDesc("pipe", pipeFunc)}, 36112297Sar4jc@virginia.edu {1041, SyscallDesc("dup2", dup2Func)}, 36212297Sar4jc@virginia.edu {1042, SyscallDesc("epoll_create")}, 36312297Sar4jc@virginia.edu {1043, SyscallDesc("inotifiy_init")}, 36412297Sar4jc@virginia.edu {1044, SyscallDesc("eventfd")}, 36512297Sar4jc@virginia.edu {1045, SyscallDesc("signalfd")}, 36612297Sar4jc@virginia.edu {1046, SyscallDesc("sendfile")}, 36712297Sar4jc@virginia.edu {1047, SyscallDesc("ftruncate", ftruncate64Func)}, 36812297Sar4jc@virginia.edu {1048, SyscallDesc("truncate", truncate64Func)}, 36912297Sar4jc@virginia.edu {1049, SyscallDesc("stat", stat64Func<RiscvLinux>)}, 37012297Sar4jc@virginia.edu {1050, SyscallDesc("lstat", lstat64Func<RiscvLinux>)}, 37112297Sar4jc@virginia.edu {1051, SyscallDesc("fstat", fstat64Func<RiscvLinux>)}, 37212297Sar4jc@virginia.edu {1052, SyscallDesc("fcntl", fcntl64Func)}, 37312297Sar4jc@virginia.edu {1053, SyscallDesc("fadvise64")}, 37412297Sar4jc@virginia.edu {1054, SyscallDesc("newfstatat")}, 37512297Sar4jc@virginia.edu {1055, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux>)}, 37612297Sar4jc@virginia.edu {1056, SyscallDesc("statfs", statfsFunc<RiscvLinux>)}, 37712297Sar4jc@virginia.edu {1057, SyscallDesc("lseek", lseekFunc)}, 37812297Sar4jc@virginia.edu {1058, SyscallDesc("mmap", mmapFunc<RiscvLinux>)}, 37912297Sar4jc@virginia.edu {1059, SyscallDesc("alarm")}, 38012297Sar4jc@virginia.edu {1060, SyscallDesc("getpgrp")}, 38112297Sar4jc@virginia.edu {1061, SyscallDesc("pause")}, 38211723Sar4jc@virginia.edu {1062, SyscallDesc("time", timeFunc<RiscvLinux>)}, 38312297Sar4jc@virginia.edu {1063, SyscallDesc("utime")}, 38412297Sar4jc@virginia.edu {1064, SyscallDesc("creat")}, 38512297Sar4jc@virginia.edu {1065, SyscallDesc("getdents")}, 38612297Sar4jc@virginia.edu {1066, SyscallDesc("futimesat")}, 38712297Sar4jc@virginia.edu {1067, SyscallDesc("select")}, 38812297Sar4jc@virginia.edu {1068, SyscallDesc("poll")}, 38912297Sar4jc@virginia.edu {1069, SyscallDesc("epoll_wait")}, 39012297Sar4jc@virginia.edu {1070, SyscallDesc("ustat")}, 39112297Sar4jc@virginia.edu {1071, SyscallDesc("vfork")}, 39212297Sar4jc@virginia.edu {1072, SyscallDesc("oldwait4")}, 39312297Sar4jc@virginia.edu {1073, SyscallDesc("recv")}, 39412297Sar4jc@virginia.edu {1074, SyscallDesc("send")}, 39512297Sar4jc@virginia.edu {1075, SyscallDesc("bdflush")}, 39612297Sar4jc@virginia.edu {1076, SyscallDesc("umount")}, 39712297Sar4jc@virginia.edu {1077, SyscallDesc("uselib")}, 39812297Sar4jc@virginia.edu {1078, SyscallDesc("sysctl")}, 39912297Sar4jc@virginia.edu {1079, SyscallDesc("fork")}, 40012297Sar4jc@virginia.edu {2011, SyscallDesc("getmainvars")} 40111723Sar4jc@virginia.edu}; 40211723Sar4jc@virginia.edu 40311851Sbrandon.potter@amd.comRiscvLinuxProcess::RiscvLinuxProcess(ProcessParams * params, 40411851Sbrandon.potter@amd.com ObjectFile *objFile) : RiscvProcess(params, objFile) 40511723Sar4jc@virginia.edu{} 40611723Sar4jc@virginia.edu 40711723Sar4jc@virginia.eduSyscallDesc* 40811723Sar4jc@virginia.eduRiscvLinuxProcess::getDesc(int callnum) 40911723Sar4jc@virginia.edu{ 41011723Sar4jc@virginia.edu return syscallDescs.find(callnum) != syscallDescs.end() ? 41111723Sar4jc@virginia.edu &syscallDescs.at(callnum) : nullptr; 41211723Sar4jc@virginia.edu} 413