#include "sys/syscall.hpp" #include "sys/sysproto.hpp" #include "sys/sysentry.hpp" #include enum { PSL_C = 0x1 }; void orbis::syscall_entry(Thread *thread) { uint64_t regstbl[] = { readRegister(thread->context, RegisterId::rdi), readRegister(thread->context, RegisterId::rsi), readRegister(thread->context, RegisterId::rdx), readRegister(thread->context, RegisterId::r10), readRegister(thread->context, RegisterId::r8), readRegister(thread->context, RegisterId::r9), }; uint64_t *regsptr = regstbl; sint regcnt = 6; int syscall_num = readRegister(thread->context, RegisterId::rax); if (syscall_num == kSYS_syscall || syscall_num == kSYS___syscall) { syscall_num = *regsptr++; --regcnt; } thread->retval[0] = 0; thread->retval[1] = readRegister(thread->context, RegisterId::rdx); int error = 0; auto p = thread->tproc; if (syscall_num >= p->sysent->size) { error = int(ErrorCode::NOSYS); } else { auto sysent = p->sysent->table[syscall_num]; uint64_t args[8]; std::memcpy(args, regsptr, std::min(regcnt, sysent.narg) * sizeof(uint64_t)); if (sysent.narg > regcnt) { if (sysent.narg > std::ssize(args)) { std::abort(); } error = int(uread(args + regcnt, ptr(readRegister(thread->context, RegisterId::rsp) + sizeof(uint64_t)), (sysent.narg - regcnt) * sizeof(uint64_t))); } if (error == 0) { if (thread->tproc->onSysEnter != nullptr) { thread->tproc->onSysEnter(thread, syscall_num, args, sysent.narg); } auto result = sysent.call(thread, args); if (thread->tproc->onSysExit != nullptr) { thread->tproc->onSysExit(thread, syscall_num, args, sysent.narg, result); } error = result.value(); } } auto rflags = readRegister(thread->context, RegisterId::rflags); if (error == 0) { writeRegister(thread->context, RegisterId::rax, thread->retval[0]); writeRegister(thread->context, RegisterId::rdx, thread->retval[1]); writeRegister(thread->context, RegisterId::rflags, rflags & ~PSL_C); } else { writeRegister(thread->context, RegisterId::rax, error); writeRegister(thread->context, RegisterId::rflags, rflags | PSL_C); } } namespace orbis { namespace detail { template struct WrapImpl; template requires(sizeof...(Args) < 8) struct WrapImpl { constexpr sysent operator()() { sysent result; result.narg = sizeof...(Args); result.call = &WrapImpl::call; return result; } private: static SysResult call(Thread *thread, uint64_t *args) { return callImpl(thread, args, std::index_sequence_for{}); } template static SysResult callImpl(Thread *thread, uint64_t *args, std::index_sequence) { return Fn(thread, Args(args[I])...); } }; } // namespace detail template constexpr auto wrap() -> decltype(detail::WrapImpl()()) { return detail::WrapImpl()(); } static const std::unordered_map gImplToName = { {wrap().call, "nosys"}, {wrap().call, "sys_exit"}, {wrap().call, "sys_fork"}, {wrap().call, "sys_read"}, {wrap().call, "sys_write"}, {wrap().call, "sys_open"}, {wrap().call, "sys_close"}, {wrap().call, "sys_wait4"}, {wrap().call, "sys_link"}, {wrap().call, "sys_unlink"}, {wrap().call, "sys_chdir"}, {wrap().call, "sys_fchdir"}, {wrap().call, "sys_mknod"}, {wrap().call, "sys_chmod"}, {wrap().call, "sys_chown"}, {wrap().call, "sys_obreak"}, {wrap().call, "sys_getpid"}, {wrap().call, "sys_mount"}, {wrap().call, "sys_unmount"}, {wrap().call, "sys_setuid"}, {wrap().call, "sys_getuid"}, {wrap().call, "sys_geteuid"}, {wrap().call, "sys_ptrace"}, {wrap().call, "sys_recvmsg"}, {wrap().call, "sys_sendmsg"}, {wrap().call, "sys_recvfrom"}, {wrap().call, "sys_accept"}, {wrap().call, "sys_getpeername"}, {wrap().call, "sys_getsockname"}, {wrap().call, "sys_access"}, {wrap().call, "sys_chflags"}, {wrap().call, "sys_fchflags"}, {wrap().call, "sys_sync"}, {wrap().call, "sys_kill"}, {wrap().call, "sys_getppid"}, {wrap().call, "sys_dup"}, {wrap().call, "sys_pipe"}, {wrap().call, "sys_getegid"}, {wrap().call, "sys_profil"}, {wrap().call, "sys_ktrace"}, {wrap().call, "sys_getgid"}, {wrap().call, "sys_getlogin"}, {wrap().call, "sys_setlogin"}, {wrap().call, "sys_acct"}, {wrap().call, "sys_sigaltstack"}, {wrap().call, "sys_ioctl"}, {wrap().call, "sys_reboot"}, {wrap().call, "sys_revoke"}, {wrap().call, "sys_symlink"}, {wrap().call, "sys_readlink"}, {wrap().call, "sys_execve"}, {wrap().call, "sys_umask"}, {wrap().call, "sys_chroot"}, {wrap().call, "sys_msync"}, {wrap().call, "sys_vfork"}, {wrap().call, "sys_sbrk"}, {wrap().call, "sys_sstk"}, {wrap().call, "sys_ovadvise"}, {wrap().call, "sys_munmap"}, {wrap().call, "sys_mprotect"}, {wrap().call, "sys_madvise"}, {wrap().call, "sys_mincore"}, {wrap().call, "sys_getgroups"}, {wrap().call, "sys_setgroups"}, {wrap().call, "sys_getpgrp"}, {wrap().call, "sys_setpgid"}, {wrap().call, "sys_setitimer"}, {wrap().call, "sys_swapon"}, {wrap().call, "sys_getitimer"}, {wrap().call, "sys_getdtablesize"}, {wrap().call, "sys_dup2"}, {wrap().call, "sys_fcntl"}, {wrap().call, "sys_select"}, {wrap().call, "sys_fsync"}, {wrap().call, "sys_setpriority"}, {wrap().call, "sys_socket"}, {wrap().call, "sys_connect"}, {wrap().call, "sys_getpriority"}, {wrap().call, "sys_bind"}, {wrap().call, "sys_setsockopt"}, {wrap().call, "sys_listen"}, {wrap().call, "sys_gettimeofday"}, {wrap().call, "sys_getrusage"}, {wrap().call, "sys_getsockopt"}, {wrap().call, "sys_readv"}, {wrap().call, "sys_writev"}, {wrap().call, "sys_settimeofday"}, {wrap().call, "sys_fchown"}, {wrap().call, "sys_fchmod"}, {wrap().call, "sys_setreuid"}, {wrap().call, "sys_setregid"}, {wrap().call, "sys_rename"}, {wrap().call, "sys_flock"}, {wrap().call, "sys_mkfifo"}, {wrap().call, "sys_sendto"}, {wrap().call, "sys_shutdown"}, {wrap().call, "sys_socketpair"}, {wrap().call, "sys_mkdir"}, {wrap().call, "sys_rmdir"}, {wrap().call, "sys_utimes"}, {wrap().call, "sys_adjtime"}, {wrap().call, "sys_setsid"}, {wrap().call, "sys_quotactl"}, {wrap().call, "sys_nlm_syscall"}, {wrap().call, "sys_nfssvc"}, {wrap().call, "sys_lgetfh"}, {wrap().call, "sys_getfh"}, {wrap().call, "sys_sysarch"}, {wrap().call, "sys_rtprio"}, {wrap().call, "sys_semsys"}, {wrap().call, "sys_msgsys"}, {wrap().call, "sys_shmsys"}, {wrap().call, "sys_freebsd6_pread"}, {wrap().call, "sys_freebsd6_pwrite"}, {wrap().call, "sys_setfib"}, {wrap().call, "sys_ntp_adjtime"}, {wrap().call, "sys_setgid"}, {wrap().call, "sys_setegid"}, {wrap().call, "sys_seteuid"}, {wrap().call, "sys_stat"}, {wrap().call, "sys_fstat"}, {wrap().call, "sys_lstat"}, {wrap().call, "sys_pathconf"}, {wrap().call, "sys_fpathconf"}, {wrap().call, "sys_getrlimit"}, {wrap().call, "sys_setrlimit"}, {wrap().call, "sys_getdirentries"}, {wrap().call, "sys_freebsd6_mmap"}, {wrap().call, "sys_freebsd6_lseek"}, {wrap().call, "sys_freebsd6_truncate"}, {wrap().call, "sys_freebsd6_ftruncate"}, {wrap().call, "sys___sysctl"}, {wrap().call, "sys_mlock"}, {wrap().call, "sys_munlock"}, {wrap().call, "sys_undelete"}, {wrap().call, "sys_futimes"}, {wrap().call, "sys_getpgid"}, {wrap().call, "sys_poll"}, {wrap().call, "sys_semget"}, {wrap().call, "sys_semop"}, {wrap().call, "sys_msgget"}, {wrap().call, "sys_msgsnd"}, {wrap().call, "sys_msgrcv"}, {wrap().call, "sys_shmat"}, {wrap().call, "sys_shmdt"}, {wrap().call, "sys_shmget"}, {wrap().call, "sys_clock_gettime"}, {wrap().call, "sys_clock_settime"}, {wrap().call, "sys_clock_getres"}, {wrap().call, "sys_ktimer_create"}, {wrap().call, "sys_ktimer_delete"}, {wrap().call, "sys_ktimer_settime"}, {wrap().call, "sys_ktimer_gettime"}, {wrap().call, "sys_ktimer_getoverrun"}, {wrap().call, "sys_nanosleep"}, {wrap().call, "sys_ntp_gettime"}, {wrap().call, "sys_minherit"}, {wrap().call, "sys_rfork"}, {wrap().call, "sys_openbsd_poll"}, {wrap().call, "sys_issetugid"}, {wrap().call, "sys_lchown"}, {wrap().call, "sys_aio_read"}, {wrap().call, "sys_aio_write"}, {wrap().call, "sys_lio_listio"}, {wrap().call, "sys_getdents"}, {wrap().call, "sys_lchmod"}, {wrap().call, "sys_lutimes"}, {wrap().call, "sys_nstat"}, {wrap().call, "sys_nfstat"}, {wrap().call, "sys_nlstat"}, {wrap().call, "sys_preadv"}, {wrap().call, "sys_pwritev"}, {wrap().call, "sys_fhopen"}, {wrap().call, "sys_fhstat"}, {wrap().call, "sys_modnext"}, {wrap().call, "sys_modstat"}, {wrap().call, "sys_modfnext"}, {wrap().call, "sys_modfind"}, {wrap().call, "sys_kldload"}, {wrap().call, "sys_kldunload"}, {wrap().call, "sys_kldfind"}, {wrap().call, "sys_kldnext"}, {wrap().call, "sys_kldstat"}, {wrap().call, "sys_kldfirstmod"}, {wrap().call, "sys_getsid"}, {wrap().call, "sys_setresuid"}, {wrap().call, "sys_setresgid"}, {wrap().call, "sys_aio_return"}, {wrap().call, "sys_aio_suspend"}, {wrap().call, "sys_aio_cancel"}, {wrap().call, "sys_aio_error"}, {wrap().call, "sys_oaio_read"}, {wrap().call, "sys_oaio_write"}, {wrap().call, "sys_olio_listio"}, {wrap().call, "sys_yield"}, {wrap().call, "sys_mlockall"}, {wrap().call, "sys_munlockall"}, {wrap().call, "sys___getcwd"}, {wrap().call, "sys_sched_setparam"}, {wrap().call, "sys_sched_getparam"}, {wrap().call, "sys_sched_setscheduler"}, {wrap().call, "sys_sched_getscheduler"}, {wrap().call, "sys_sched_yield"}, {wrap().call, "sys_sched_get_priority_max"}, {wrap().call, "sys_sched_get_priority_min"}, {wrap().call, "sys_sched_rr_get_interval"}, {wrap().call, "sys_utrace"}, {wrap().call, "sys_kldsym"}, {wrap().call, "sys_jail"}, {wrap().call, "sys_nnpfs_syscall"}, {wrap().call, "sys_sigprocmask"}, {wrap().call, "sys_sigsuspend"}, {wrap().call, "sys_sigpending"}, {wrap().call, "sys_sigtimedwait"}, {wrap().call, "sys_sigwaitinfo"}, {wrap().call, "sys___acl_get_file"}, {wrap().call, "sys___acl_set_file"}, {wrap().call, "sys___acl_get_fd"}, {wrap().call, "sys___acl_set_fd"}, {wrap().call, "sys___acl_delete_file"}, {wrap().call, "sys___acl_delete_fd"}, {wrap().call, "sys___acl_aclcheck_file"}, {wrap().call, "sys___acl_aclcheck_fd"}, {wrap().call, "sys_extattrctl"}, {wrap().call, "sys_extattr_set_file"}, {wrap().call, "sys_extattr_get_file"}, {wrap().call, "sys_extattr_delete_file"}, {wrap().call, "sys_aio_waitcomplete"}, {wrap().call, "sys_getresuid"}, {wrap().call, "sys_getresgid"}, {wrap().call, "sys_kqueue"}, {wrap().call, "sys_kevent"}, {wrap().call, "sys_extattr_set_fd"}, {wrap().call, "sys_extattr_get_fd"}, {wrap().call, "sys_extattr_delete_fd"}, {wrap().call, "sys___setugid"}, {wrap().call, "sys_eaccess"}, {wrap().call, "sys_afs3_syscall"}, {wrap().call, "sys_nmount"}, {wrap().call, "sys___mac_get_proc"}, {wrap().call, "sys___mac_set_proc"}, {wrap().call, "sys___mac_get_fd"}, {wrap().call, "sys___mac_get_file"}, {wrap().call, "sys___mac_set_fd"}, {wrap().call, "sys___mac_set_file"}, {wrap().call, "sys_kenv"}, {wrap().call, "sys_lchflags"}, {wrap().call, "sys_uuidgen"}, {wrap().call, "sys_sendfile"}, {wrap().call, "sys_mac_syscall"}, {wrap().call, "sys_getfsstat"}, {wrap().call, "sys_statfs"}, {wrap().call, "sys_fstatfs"}, {wrap().call, "sys_fhstatfs"}, {wrap().call, "sys_ksem_close"}, {wrap().call, "sys_ksem_post"}, {wrap().call, "sys_ksem_wait"}, {wrap().call, "sys_ksem_trywait"}, {wrap().call, "sys_ksem_init"}, {wrap().call, "sys_ksem_open"}, {wrap().call, "sys_ksem_unlink"}, {wrap().call, "sys_ksem_getvalue"}, {wrap().call, "sys_ksem_destroy"}, {wrap().call, "sys___mac_get_pid"}, {wrap().call, "sys___mac_get_link"}, {wrap().call, "sys___mac_set_link"}, {wrap().call, "sys_extattr_set_link"}, {wrap().call, "sys_extattr_get_link"}, {wrap().call, "sys_extattr_delete_link"}, {wrap().call, "sys___mac_execve"}, {wrap().call, "sys_sigaction"}, {wrap().call, "sys_sigreturn"}, {wrap().call, "sys_getcontext"}, {wrap().call, "sys_setcontext"}, {wrap().call, "sys_swapcontext"}, {wrap().call, "sys_swapoff"}, {wrap().call, "sys___acl_get_link"}, {wrap().call, "sys___acl_set_link"}, {wrap().call, "sys___acl_delete_link"}, {wrap().call, "sys___acl_aclcheck_link"}, {wrap().call, "sys_sigwait"}, {wrap().call, "sys_thr_create"}, {wrap().call, "sys_thr_exit"}, {wrap().call, "sys_thr_self"}, {wrap().call, "sys_thr_kill"}, {wrap().call, "sys__umtx_lock"}, {wrap().call, "sys__umtx_unlock"}, {wrap().call, "sys_jail_attach"}, {wrap().call, "sys_extattr_list_fd"}, {wrap().call, "sys_extattr_list_file"}, {wrap().call, "sys_extattr_list_link"}, {wrap().call, "sys_ksem_timedwait"}, {wrap().call, "sys_thr_suspend"}, {wrap().call, "sys_thr_wake"}, {wrap().call, "sys_kldunloadf"}, {wrap().call, "sys_audit"}, {wrap().call, "sys_auditon"}, {wrap().call, "sys_getauid"}, {wrap().call, "sys_setauid"}, {wrap().call, "sys_getaudit"}, {wrap().call, "sys_setaudit"}, {wrap().call, "sys_getaudit_addr"}, {wrap().call, "sys_setaudit_addr"}, {wrap().call, "sys_auditctl"}, {wrap().call, "sys__umtx_op"}, {wrap().call, "sys_thr_new"}, {wrap().call, "sys_sigqueue"}, {wrap().call, "sys_kmq_open"}, {wrap().call, "sys_kmq_setattr"}, {wrap().call, "sys_kmq_timedreceive"}, {wrap().call, "sys_kmq_timedsend"}, {wrap().call, "sys_kmq_notify"}, {wrap().call, "sys_kmq_unlink"}, {wrap().call, "sys_abort2"}, {wrap().call, "sys_thr_set_name"}, {wrap().call, "sys_aio_fsync"}, {wrap().call, "sys_rtprio_thread"}, {wrap().call, "sys_sctp_peeloff"}, {wrap().call, "sys_sctp_generic_sendmsg"}, {wrap().call, "sys_sctp_generic_sendmsg_iov"}, {wrap().call, "sys_sctp_generic_recvmsg"}, {wrap().call, "sys_pread"}, {wrap().call, "sys_pwrite"}, {wrap().call, "sys_mmap"}, {wrap().call, "sys_lseek"}, {wrap().call, "sys_truncate"}, {wrap().call, "sys_ftruncate"}, {wrap().call, "sys_thr_kill2"}, {wrap().call, "sys_shm_open"}, {wrap().call, "sys_shm_unlink"}, {wrap().call, "sys_cpuset"}, {wrap().call, "sys_cpuset_setid"}, {wrap().call, "sys_cpuset_getid"}, {wrap().call, "sys_cpuset_getaffinity"}, {wrap().call, "sys_cpuset_setaffinity"}, {wrap().call, "sys_faccessat"}, {wrap().call, "sys_fchmodat"}, {wrap().call, "sys_fchownat"}, {wrap().call, "sys_fexecve"}, {wrap().call, "sys_fstatat"}, {wrap().call, "sys_futimesat"}, {wrap().call, "sys_linkat"}, {wrap().call, "sys_mkdirat"}, {wrap().call, "sys_mkfifoat"}, {wrap().call, "sys_mknodat"}, {wrap().call, "sys_openat"}, {wrap().call, "sys_readlinkat"}, {wrap().call, "sys_renameat"}, {wrap().call, "sys_symlinkat"}, {wrap().call, "sys_unlinkat"}, {wrap().call, "sys_posix_openpt"}, {wrap().call, "sys_gssd_syscall"}, {wrap().call, "sys_jail_get"}, {wrap().call, "sys_jail_set"}, {wrap().call, "sys_jail_remove"}, {wrap().call, "sys_closefrom"}, {wrap().call, "sys___semctl"}, {wrap().call, "sys_msgctl"}, {wrap().call, "sys_shmctl"}, {wrap().call, "sys_lpathconf"}, {wrap().call, "sys_cap_new"}, {wrap().call, "sys_cap_getrights"}, {wrap().call, "sys_cap_enter"}, {wrap().call, "sys_cap_getmode"}, {wrap().call, "sys_pdfork"}, {wrap().call, "sys_pdkill"}, {wrap().call, "sys_pdgetpid"}, {wrap().call, "sys_pselect"}, {wrap().call, "sys_getloginclass"}, {wrap().call, "sys_setloginclass"}, {wrap().call, "sys_rctl_get_racct"}, {wrap().call, "sys_rctl_get_rules"}, {wrap().call, "sys_rctl_get_limits"}, {wrap().call, "sys_rctl_add_rule"}, {wrap().call, "sys_rctl_remove_rule"}, {wrap().call, "sys_posix_fallocate"}, {wrap().call, "sys_posix_fadvise"}, {wrap().call, "sys_netcontrol"}, {wrap().call, "sys_netabort"}, {wrap().call, "sys_netgetsockinfo"}, {wrap().call, "sys_socketex"}, {wrap().call, "sys_socketclose"}, {wrap().call, "sys_netgetiflist"}, {wrap().call, "sys_kqueueex"}, {wrap().call, "sys_mtypeprotect"}, {wrap().call, "sys_regmgr_call"}, {wrap().call, "sys_jitshm_create"}, {wrap().call, "sys_jitshm_alias"}, {wrap().call, "sys_dl_get_list"}, {wrap().call, "sys_dl_get_info"}, {wrap().call, "sys_dl_notify_event"}, {wrap().call, "sys_evf_create"}, {wrap().call, "sys_evf_delete"}, {wrap().call, "sys_evf_open"}, {wrap().call, "sys_evf_close"}, {wrap().call, "sys_evf_wait"}, {wrap().call, "sys_evf_trywait"}, {wrap().call, "sys_evf_set"}, {wrap().call, "sys_evf_clear"}, {wrap().call, "sys_evf_cancel"}, {wrap().call, "sys_query_memory_protection"}, {wrap().call, "sys_batch_map"}, {wrap().call, "sys_osem_create"}, {wrap().call, "sys_osem_delete"}, {wrap().call, "sys_osem_open"}, {wrap().call, "sys_osem_close"}, {wrap().call, "sys_osem_wait"}, {wrap().call, "sys_osem_trywait"}, {wrap().call, "sys_osem_post"}, {wrap().call, "sys_osem_cancel"}, {wrap().call, "sys_namedobj_create"}, {wrap().call, "sys_namedobj_delete"}, {wrap().call, "sys_set_vm_container"}, {wrap().call, "sys_debug_init"}, {wrap().call, "sys_suspend_process"}, {wrap().call, "sys_resume_process"}, {wrap().call, "sys_opmc_enable"}, {wrap().call, "sys_opmc_disable"}, {wrap().call, "sys_opmc_set_ctl"}, {wrap().call, "sys_opmc_set_ctr"}, {wrap().call, "sys_opmc_get_ctr"}, {wrap().call, "sys_budget_create"}, {wrap().call, "sys_budget_delete"}, {wrap().call, "sys_budget_get"}, {wrap().call, "sys_budget_set"}, {wrap().call, "sys_virtual_query"}, {wrap().call, "sys_mdbg_call"}, {wrap().call, "sys_obs_sblock_create"}, {wrap().call, "sys_obs_sblock_delete"}, {wrap().call, "sys_obs_sblock_enter"}, {wrap().call, "sys_obs_sblock_exit"}, {wrap().call, "sys_obs_sblock_xenter"}, {wrap().call, "sys_obs_sblock_xexit"}, {wrap().call, "sys_obs_eport_create"}, {wrap().call, "sys_obs_eport_delete"}, {wrap().call, "sys_obs_eport_trigger"}, {wrap().call, "sys_obs_eport_open"}, {wrap().call, "sys_obs_eport_close"}, {wrap().call, "sys_is_in_sandbox"}, {wrap().call, "sys_dmem_container"}, {wrap().call, "sys_get_authinfo"}, {wrap().call, "sys_mname"}, {wrap().call, "sys_dynlib_dlopen"}, {wrap().call, "sys_dynlib_dlclose"}, {wrap().call, "sys_dynlib_dlsym"}, {wrap().call, "sys_dynlib_get_list"}, {wrap().call, "sys_dynlib_get_info"}, {wrap().call, "sys_dynlib_load_prx"}, {wrap().call, "sys_dynlib_unload_prx"}, {wrap().call, "sys_dynlib_do_copy_relocations"}, {wrap().call, "sys_dynlib_prepare_dlclose"}, {wrap().call, "sys_dynlib_get_proc_param"}, {wrap().call, "sys_dynlib_process_needed_and_relocate"}, {wrap().call, "sys_sandbox_path"}, {wrap().call, "sys_mdbg_service"}, {wrap().call, "sys_randomized_path"}, {wrap().call, "sys_rdup"}, {wrap().call, "sys_dl_get_metadata"}, {wrap().call, "sys_workaround8849"}, {wrap().call, "sys_is_development_mode"}, {wrap().call, "sys_get_self_auth_info"}, {wrap().call, "sys_dynlib_get_info_ex"}, {wrap().call, "sys_budget_getid"}, {wrap().call, "sys_budget_get_ptype"}, {wrap().call, "sys_get_paging_stats_of_all_threads"}, {wrap().call, "sys_get_proc_type_info"}, {wrap().call, "sys_get_resident_count"}, {wrap().call, "sys_prepare_to_suspend_process"}, {wrap().call, "sys_get_resident_fmem_count"}, {wrap().call, "sys_thr_get_name"}, {wrap().call, "sys_set_gpo"}, {wrap().call, "sys_get_paging_stats_of_all_objects"}, {wrap().call, "sys_test_debug_rwmem"}, {wrap().call, "sys_free_stack"}, {wrap().call, "sys_suspend_system"}, {wrap().call, "sys_ipmimgr_call"}, {wrap().call, "sys_get_gpo"}, {wrap().call, "sys_get_vm_map_timestamp"}, {wrap().call, "sys_opmc_set_hw"}, {wrap().call, "sys_opmc_get_hw"}, {wrap().call, "sys_get_cpu_usage_all"}, {wrap().call, "sys_mmap_dmem"}, {wrap().call, "sys_physhm_open"}, {wrap().call, "sys_physhm_unlink"}, {wrap().call, "sys_resume_internal_hdd"}, {wrap().call, "sys_thr_suspend_ucontext"}, {wrap().call, "sys_thr_resume_ucontext"}, {wrap().call, "sys_thr_get_ucontext"}, {wrap().call, "sys_thr_set_ucontext"}, {wrap().call, "sys_set_timezone_info"}, {wrap().call, "sys_set_phys_fmem_limit"}, {wrap().call, "sys_utc_to_localtime"}, {wrap().call, "sys_localtime_to_utc"}, {wrap().call, "sys_set_uevt"}, {wrap().call, "sys_get_cpu_usage_proc"}, {wrap().call, "sys_get_map_statistics"}, {wrap().call, "sys_set_chicken_switches"}, {wrap().call, "sys_extend_page_table_pool"}, {wrap().call, "sys_extend_page_table_pool2"}, {wrap().call, "sys_get_kernel_mem_statistics"}, {wrap().call, "sys_get_sdk_compiled_version"}, {wrap().call, "sys_app_state_change"}, {wrap().call, "sys_dynlib_get_obj_member"}, {wrap().call, "sys_budget_get_ptype_of_budget"}, {wrap().call, "sys_prepare_to_resume_process"}, {wrap().call, "sys_process_terminate"}, {wrap().call, "sys_blockpool_open"}, {wrap().call, "sys_blockpool_map"}, {wrap().call, "sys_blockpool_unmap"}, {wrap().call, "sys_dynlib_get_info_for_libdbg"}, {wrap().call, "sys_blockpool_batch"}, {wrap().call, "sys_fdatasync"}, {wrap().call, "sys_dynlib_get_list2"}, {wrap().call, "sys_dynlib_get_info2"}, {wrap().call, "sys_aio_submit"}, {wrap().call, "sys_aio_multi_delete"}, {wrap().call, "sys_aio_multi_wait"}, {wrap().call, "sys_aio_multi_poll"}, {wrap().call, "sys_aio_get_data"}, {wrap().call, "sys_aio_multi_cancel"}, {wrap().call, "sys_get_bio_usage_all"}, {wrap().call, "sys_aio_create"}, {wrap().call, "sys_aio_submit_cmd"}, {wrap().call, "sys_aio_init"}, {wrap().call, "sys_get_page_table_stats"}, {wrap().call, "sys_dynlib_get_list_for_libdbg"}, {wrap().call, "sys_blockpool_move"}, {wrap().call, "sys_virtual_query_all"}, {wrap().call, "sys_reserve_2mb_page"}, {wrap().call, "sys_cpumode_yield"}, {wrap().call, "sys_wait6"}, {wrap().call, "sys_cap_rights_limit"}, {wrap().call, "sys_cap_ioctls_limit"}, {wrap().call, "sys_cap_ioctls_get"}, {wrap().call, "sys_cap_fcntls_limit"}, {wrap().call, "sys_cap_fcntls_get"}, {wrap().call, "sys_bindat"}, {wrap().call, "sys_connectat"}, {wrap().call, "sys_chflagsat"}, {wrap().call, "sys_accept4"}, {wrap().call, "sys_pipe2"}, {wrap().call, "sys_aio_mlock"}, {wrap().call, "sys_procctl"}, {wrap().call, "sys_ppoll"}, {wrap().call, "sys_futimens"}, {wrap().call, "sys_utimensat"}, {wrap().call, "sys_numa_getaffinity"}, {wrap().call, "sys_numa_setaffinity"}, {wrap().call, "sys_apr_submit"}, {wrap().call, "sys_apr_resolve"}, {wrap().call, "sys_apr_stat"}, {wrap().call, "sys_apr_wait"}, {wrap().call, "sys_apr_ctrl"}, {wrap().call, "sys_get_phys_page_size"}, {wrap().call, "sys_begin_app_mount"}, {wrap().call, "sys_end_app_mount"}, {wrap().call, "sys_fsc2h_ctrl"}, {wrap().call, "sys_streamwrite"}, {wrap().call, "sys_app_save"}, {wrap().call, "sys_app_restore"}, {wrap().call, "sys_saved_app_delete"}, {wrap().call, "sys_get_ppr_sdk_compiled_version"}, {wrap().call, "sys_notify_app_event"}, {wrap().call, "sys_ioreq"}, {wrap().call, "sys_openintr"}, {wrap().call, "sys_dl_get_info_2"}, {wrap().call, "sys_acinfo_add"}, {wrap().call, "sys_acinfo_delete"}, {wrap().call, "sys_acinfo_get_all_for_coredump"}, {wrap().call, "sys_ampr_ctrl_debug"}, {wrap().call, "sys_workspace_ctrl"}, }; const char *getSysentName(SysResult (*sysent)(Thread *, uint64_t *)) { auto it = gImplToName.find(sysent); if (it == gImplToName.end()) { return nullptr; } return it->second; } static constexpr sysent freebsd9_sysent[] = { wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), }; // TODO static constexpr sysent freebsd11_sysent[] = { wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), }; static constexpr sysent ps4_sysent[] = { wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), wrap(), }; constinit sysentvec freebsd9_sysvec = { .size = std::size(freebsd9_sysent), .table = freebsd9_sysent }; constinit sysentvec freebsd11_sysvec = { .size = std::size(freebsd11_sysent), .table = freebsd11_sysent }; constinit sysentvec ps4_sysvec = { .size = std::size(ps4_sysent), .table = ps4_sysent }; constinit sysentvec ps5_sysvec = { .size = 0, .table = nullptr }; } // namespace orbis