| |
| /*--------------------------------------------------------------------*/ |
| /*--- System call numbers for Solaris. vki-scnums-solaris.h ---*/ |
| /*--------------------------------------------------------------------*/ |
| |
| /* |
| This file is part of Valgrind, a dynamic binary instrumentation |
| framework. |
| |
| Copyright (C) 2011-2015 Petr Pavlu |
| setup@dagobah.cz |
| |
| This program is free software; you can redistribute it and/or |
| modify it under the terms of the GNU General Public License as |
| published by the Free Software Foundation; either version 2 of the |
| License, or (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 02111-1307, USA. |
| |
| The GNU General Public License is contained in the file COPYING. |
| */ |
| |
| /* Copyright 2013-2015, Ivo Raisr <ivosh@ivosh.net>. */ |
| |
| /* Copyright 2013, OmniTI Computer Consulting, Inc. All rights reserved. */ |
| |
| #ifndef __VKI_SCNUMS_SOLARIS_H |
| #define __VKI_SCNUMS_SOLARIS_H |
| |
| /* Note: Basic information about Solaris syscalls can be found in the kernel |
| source file uts/common/os/sysent.c. |
| */ |
| |
| /* Include sys/syscall.h to get SYS_* constants (and sys/trap.h to get T_*) to |
| avoid any copyright issues connected with their potential copying out of |
| the header file. |
| */ |
| #include <sys/syscall.h> |
| #include <sys/trap.h> |
| |
| /* normal syscall (int $0x91) */ |
| #define VG_SOLARIS_SYSCALL_CLASS_CLASSIC 0 |
| /* fasttrap syscall (int $0xD2) */ |
| #define VG_SOLARIS_SYSCALL_CLASS_FASTTRAP 1 |
| |
| #define VG_SOLARIS_SYSCALL_CLASS_SHIFT 24 |
| #define VG_SOLARIS_SYSCALL_NUMBER_MASK 0x00FFFFFF |
| |
| #define VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(sysno) \ |
| ((VG_SOLARIS_SYSCALL_CLASS_FASTTRAP << VG_SOLARIS_SYSCALL_CLASS_SHIFT) \ |
| | (sysno)) |
| #define VG_SOLARIS_SYSNO_CLASS(sysno) \ |
| ((sysno) >> VG_SOLARIS_SYSCALL_CLASS_SHIFT) |
| #define VG_SOLARIS_SYSNO_INDEX(sysno) \ |
| ((sysno) & VG_SOLARIS_SYSCALL_NUMBER_MASK) |
| |
| #define __NR_exit SYS_exit |
| #if defined(SOLARIS_SPAWN_SYSCALL) |
| #define __NR_spawn SYS_spawn |
| #endif /* SOLARIS_SPAWN_SYSCALL */ |
| #define __NR_read SYS_read |
| #define __NR_write SYS_write |
| #define __NR_close SYS_close |
| #define __NR_linkat SYS_linkat |
| #define __NR_symlinkat SYS_symlinkat |
| #define __NR_chdir SYS_chdir |
| #define __NR_time SYS_time |
| #define __NR_brk SYS_brk |
| #define __NR_lseek SYS_lseek |
| #define __NR_getpid SYS_getpid |
| #define __NR_mount SYS_mount |
| #define __NR_readlinkat SYS_readlinkat |
| #define __NR_setuid SYS_setuid |
| #define __NR_getuid SYS_getuid |
| #define __NR_stime SYS_stime |
| //#define __NR_pcsample SYS_pcsample |
| #define __NR_alarm SYS_alarm |
| #define __NR_pause SYS_pause |
| #if defined(SOLARIS_FREALPATHAT_SYSCALL) |
| #define __NR_frealpathat SYS_frealpathat |
| #endif /* SOLARIS_FREALPATHAT_SYSCALL */ |
| #define __NR_stty SYS_stty |
| #define __NR_gtty SYS_gtty |
| //#define __NR_nice SYS_nice |
| //#define __NR_statfs SYS_statfs |
| //#define __NR_sync SYS_sync |
| #define __NR_kill SYS_kill |
| //#define __NR_fstatfs SYS_fstatfs |
| #define __NR_pgrpsys SYS_pgrpsys |
| //#define __NR_uucopystr SYS_uucopystr |
| #define __NR_pipe SYS_pipe |
| #define __NR_times SYS_times |
| //#define __NR_profil SYS_profil |
| #define __NR_faccessat SYS_faccessat |
| #define __NR_setgid SYS_setgid |
| #define __NR_getgid SYS_getgid |
| #define __NR_mknodat SYS_mknodat |
| //#define __NR_msgsys SYS_msgsys |
| #define __NR_sysi86 SYS_sysi86 |
| //#define __NR_acct SYS_acct |
| #define __NR_shmsys SYS_shmsys |
| #define __NR_semsys SYS_semsys |
| #define __NR_ioctl SYS_ioctl |
| //#define __NR_uadmin SYS_uadmin |
| #define __NR_fchownat SYS_fchownat |
| //#define __NR_utssys SYS_utssys |
| #define __NR_fdsync SYS_fdsync |
| #define __NR_execve SYS_execve |
| #define __NR_umask SYS_umask |
| #define __NR_chroot SYS_chroot |
| #define __NR_fcntl SYS_fcntl |
| //#define __NR_ulimit SYS_ulimit |
| #define __NR_renameat SYS_renameat |
| #define __NR_unlinkat SYS_unlinkat |
| #define __NR_fstatat SYS_fstatat |
| #define __NR_fstatat64 SYS_fstatat64 |
| #define __NR_openat SYS_openat |
| #define __NR_openat64 SYS_openat64 |
| #define __NR_tasksys SYS_tasksys |
| //#define __NR_acctctl SYS_acctctl |
| //#define __NR_exacctsys SYS_exacctsys |
| #define __NR_getpagesizes SYS_getpagesizes |
| //#define __NR_rctlsys SYS_rctlsys |
| //#define __NR_sidsys SYS_sidsys |
| #define __NR_lwp_park SYS_lwp_park |
| #define __NR_sendfilev SYS_sendfilev |
| #if defined(SOLARIS_LWP_NAME_SYSCALL) |
| #define __NR_lwp_name SYS_lwp_name |
| #endif /* SOLARIS_LWP_NAME_SYSCALL */ |
| #define __NR_getdents SYS_getdents |
| #define __NR_privsys SYS_privsys |
| #define __NR_ucredsys SYS_ucredsys |
| //#define __NR_sysfs SYS_sysfs |
| #define __NR_getmsg SYS_getmsg |
| #define __NR_putmsg SYS_putmsg |
| #define __NR_setgroups SYS_setgroups |
| #define __NR_getgroups SYS_getgroups |
| #define __NR_sigprocmask SYS_sigprocmask |
| //#define __NR_sigsuspend SYS_sigsuspend |
| #define __NR_sigaltstack SYS_sigaltstack |
| #define __NR_sigaction SYS_sigaction |
| #define __NR_sigpending SYS_sigpending |
| #define __NR_context SYS_context |
| #define __NR_fchmodat SYS_fchmodat |
| #define __NR_mkdirat SYS_mkdirat |
| #define __NR_statvfs SYS_statvfs |
| #define __NR_fstatvfs SYS_fstatvfs |
| //#define __NR_getloadavg SYS_getloadavg |
| #define __NR_nfssys SYS_nfssys |
| #define __NR_waitid SYS_waitid |
| #define __NR_waitsys SYS_waitsys /* = SYS_waitid (historical) */ |
| //#define __NR_sigsendsys SYS_sigsendsys |
| //#define __NR_hrtsys SYS_hrtsys |
| #if defined(SOLARIS_UTIMESYS_SYSCALL) |
| #define __NR_utimesys SYS_utimesys |
| #endif /* SOLARIS_UTIMESYS_SYSCALL */ |
| #if defined(SOLARIS_UTIMENSAT_SYSCALL) |
| #define __NR_utimensat SYS_utimensat |
| #endif /* SOLARIS_UTIMENSAT_SYSCALL */ |
| #define __NR_sigresend SYS_sigresend |
| #define __NR_priocntlsys SYS_priocntlsys |
| #define __NR_pathconf SYS_pathconf |
| //#define __NR_mincore SYS_mincore |
| #define __NR_mmap SYS_mmap |
| #define __NR_mprotect SYS_mprotect |
| #define __NR_munmap SYS_munmap |
| //#define __NR_fpathconf SYS_fpathconf |
| //#define __NR_vfork SYS_vfork |
| #define __NR_fchdir SYS_fchdir |
| #define __NR_readv SYS_readv |
| #define __NR_writev SYS_writev |
| #if defined(SOLARIS_UUIDSYS_SYSCALL) |
| #define __NR_uuidsys SYS_uuidsys |
| #endif /* SOLARIS_UUIDSYS_SYSCALL */ |
| #define __NR_mmapobj SYS_mmapobj |
| #define __NR_setrlimit SYS_setrlimit |
| #define __NR_getrlimit SYS_getrlimit |
| #define __NR_memcntl SYS_memcntl |
| #define __NR_getpmsg SYS_getpmsg |
| #define __NR_putpmsg SYS_putpmsg |
| #define __NR_uname SYS_uname |
| #define __NR_setegid SYS_setegid |
| #define __NR_sysconfig SYS_sysconfig |
| //#define __NR_adjtime SYS_adjtime |
| #define __NR_systeminfo SYS_systeminfo |
| //#define __NR_sharefs SYS_sharefs |
| #define __NR_seteuid SYS_seteuid |
| #define __NR_forksys SYS_forksys |
| #define __NR_sigtimedwait SYS_sigtimedwait |
| //#define __NR_lwp_info SYS_lwp_info |
| #define __NR_yield SYS_yield |
| #define __NR_lwp_sema_post SYS_lwp_sema_post |
| #define __NR_lwp_sema_trywait SYS_lwp_sema_trywait |
| #define __NR_lwp_detach SYS_lwp_detach |
| //#define __NR_corectl SYS_corectl |
| //#define __NR_modctl SYS_modctl |
| #define __NR_fchroot SYS_fchroot |
| #if defined(SOLARIS_SYSTEM_STATS_SYSCALL) |
| #define __NR_system_stats SYS_system_stats |
| #endif /* SOLARIS_SYSTEM_STATS_SYSCALL */ |
| //#define __NR_vhangup SYS_vhangup |
| #define __NR_gettimeofday SYS_gettimeofday |
| #define __NR_getitimer SYS_getitimer |
| #define __NR_setitimer SYS_setitimer |
| #define __NR_lwp_create SYS_lwp_create |
| #define __NR_lwp_exit SYS_lwp_exit |
| #define __NR_lwp_suspend SYS_lwp_suspend |
| #define __NR_lwp_continue SYS_lwp_continue |
| #if defined(SOLARIS_LWP_SIGQUEUE_SYSCALL) |
| #define __NR_lwp_sigqueue SYS_lwp_sigqueue |
| #else |
| #define __NR_lwp_kill SYS_lwp_kill |
| #endif /* SOLARIS_LWP_SIGQUEUE_SYSCALL */ |
| #define __NR_lwp_self SYS_lwp_self |
| #define __NR_lwp_sigmask SYS_lwp_sigmask |
| #define __NR_lwp_private SYS_lwp_private |
| #define __NR_lwp_wait SYS_lwp_wait |
| #define __NR_lwp_mutex_wakeup SYS_lwp_mutex_wakeup |
| #define __NR_lwp_cond_wait SYS_lwp_cond_wait |
| //#define __NR_lwp_cond_signal SYS_lwp_cond_signal |
| #define __NR_lwp_cond_broadcast SYS_lwp_cond_broadcast |
| #define __NR_pread SYS_pread |
| #define __NR_pwrite SYS_pwrite |
| #define __NR_llseek SYS_llseek |
| //#define __NR_inst_sync SYS_inst_sync |
| //#define __NR_brand SYS_brand |
| //#define __NR_kaio SYS_kaio |
| //#define __NR_cpc SYS_cpc |
| //#define __NR_lgrpsys SYS_lgrpsys |
| //#define __NR_meminfosys SYS_meminfosys /* = SYS_lgrpsys */ |
| #define __NR_rusagesys SYS_rusagesys |
| #define __NR_port SYS_port |
| #define __NR_pollsys SYS_pollsys |
| #define __NR_labelsys SYS_labelsys |
| #define __NR_acl SYS_acl |
| #define __NR_auditsys SYS_auditsys |
| //#define __NR_processor_bind SYS_processor_bind |
| //#define __NR_processor_info SYS_processor_info |
| #define __NR_p_online SYS_p_online |
| #define __NR_sigqueue SYS_sigqueue |
| #define __NR_clock_gettime SYS_clock_gettime |
| #define __NR_clock_settime SYS_clock_settime |
| #define __NR_clock_getres SYS_clock_getres |
| #define __NR_timer_create SYS_timer_create |
| #define __NR_timer_delete SYS_timer_delete |
| #define __NR_timer_settime SYS_timer_settime |
| #define __NR_timer_gettime SYS_timer_gettime |
| #define __NR_timer_getoverrun SYS_timer_getoverrun |
| #define __NR_nanosleep SYS_nanosleep |
| #define __NR_facl SYS_facl |
| #define __NR_door SYS_door |
| #define __NR_setreuid SYS_setreuid |
| #define __NR_setregid SYS_setregid |
| //#define __NR_install_utrap SYS_install_utrap |
| //#define __NR_signotify SYS_signotify |
| #define __NR_schedctl SYS_schedctl |
| #define __NR_pset SYS_pset |
| //#define SYS_sparc_utrap_install |
| #define __NR_resolvepath SYS_resolvepath |
| #define __NR_lwp_mutex_timedlock SYS_lwp_mutex_timedlock |
| #define __NR_lwp_sema_timedwait SYS_lwp_sema_timedwait |
| #define __NR_lwp_rwlock_sys SYS_lwp_rwlock_sys |
| #define __NR_getdents64 SYS_getdents64 |
| #define __NR_mmap64 SYS_mmap64 |
| #define __NR_statvfs64 SYS_statvfs64 |
| #define __NR_fstatvfs64 SYS_fstatvfs64 |
| #define __NR_setrlimit64 SYS_setrlimit64 |
| #define __NR_getrlimit64 SYS_getrlimit64 |
| #define __NR_pread64 SYS_pread64 |
| #define __NR_pwrite64 SYS_pwrite64 |
| //#define __NR_rpcsys SYS_rpcsys |
| #define __NR_zone SYS_zone |
| //#define __NR_autofssys SYS_autofssys |
| #define __NR_getcwd SYS_getcwd |
| #define __NR_so_socket SYS_so_socket |
| #define __NR_so_socketpair SYS_so_socketpair |
| #define __NR_bind SYS_bind |
| #define __NR_listen SYS_listen |
| #define __NR_accept SYS_accept |
| #define __NR_connect SYS_connect |
| #define __NR_shutdown SYS_shutdown |
| #define __NR_recv SYS_recv |
| #define __NR_recvfrom SYS_recvfrom |
| #define __NR_recvmsg SYS_recvmsg |
| #define __NR_send SYS_send |
| #define __NR_sendmsg SYS_sendmsg |
| #define __NR_sendto SYS_sendto |
| #define __NR_getpeername SYS_getpeername |
| #define __NR_getsockname SYS_getsockname |
| #define __NR_getsockopt SYS_getsockopt |
| #define __NR_setsockopt SYS_setsockopt |
| //#define __NR_sockconfig SYS_sockconfig |
| //#define __NR_ntp_gettime SYS_ntp_gettime |
| //#define __NR_ntp_adjtime SYS_ntp_adjtime |
| //#define __NR_lwp_mutex_unlock SYS_lwp_mutex_unlock |
| //#define __NR_lwp_mutex_trylock SYS_lwp_mutex_trylock |
| #define __NR_lwp_mutex_register SYS_lwp_mutex_register |
| //#define __NR_cladm SYS_cladm |
| #define __NR_uucopy SYS_uucopy |
| #define __NR_umount2 SYS_umount2 |
| |
| /* The following syscalls were removed in Solaris 11 (see |
| https://wikis.oracle.com/display/DTrace/syscall+Provider). Valgrind's core |
| cannot use these syscalls but wrappers have to be provided for them because |
| they are still in use on illumos. |
| */ |
| #if defined(SOLARIS_OLD_SYSCALLS) |
| #define __NR_open SYS_open |
| #define __NR_link SYS_link |
| #define __NR_unlink SYS_unlink |
| #define __NR_mknod SYS_mknod |
| #define __NR_chmod SYS_chmod |
| #define __NR_chown SYS_chown |
| #define __NR_stat SYS_stat |
| #define __NR_fstat SYS_fstat |
| #define __NR_access SYS_access |
| #define __NR_rmdir SYS_rmdir |
| #define __NR_mkdir SYS_mkdir |
| #define __NR_lstat SYS_lstat |
| #define __NR_symlink SYS_symlink |
| #define __NR_readlink SYS_readlink |
| #define __NR_fchmod SYS_fchmod |
| #define __NR_fchown SYS_fchown |
| #define __NR_lchown SYS_lchown |
| #define __NR_rename SYS_rename |
| #define __NR_stat64 SYS_stat64 |
| #define __NR_lstat64 SYS_lstat64 |
| #define __NR_fstat64 SYS_fstat64 |
| #define __NR_open64 SYS_open64 |
| #endif /* SOLARIS_OLD_SYSCALLS */ |
| |
| /* |
| #define __NR_null \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_FNULL) |
| #define __NR_fgetfp \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_FGETFP) |
| #define __NR_fsetfp \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_FSETFP) |
| */ |
| #define __NR_gethrtime \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETHRTIME) |
| #define __NR_gethrvtime \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETHRVTIME) |
| #define __NR_gethrestime \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETHRESTIME) |
| /* |
| #define __NR_getlgrp \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETLGRP) |
| */ |
| #if defined(SOLARIS_GETHRT_FASTTRAP) |
| #define __NR_gethrt \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETHRT) |
| #endif /* SOLARIS_GETHRT_FASTTRAP */ |
| #if defined(SOLARIS_GETZONEOFFSET_FASTTRAP) |
| #define __NR_getzoneoffset \ |
| VG_SOLARIS_SYSCALL_CONSTRUCT_FASTTRAP(T_GETZONEOFFSET) |
| #endif /* SOLARIS_GETZONEOFFSET_FASTTRAP */ |
| |
| #endif /* __VKI_SCNUMS_SOLARIS_H */ |
| |
| /*--------------------------------------------------------------------*/ |
| /*--- end ---*/ |
| /*--------------------------------------------------------------------*/ |