1999-02-19 00:21:36 +00:00
/*
* Copyright ( c ) 1991 , 1992 Paul Kranenburg < pk @ cs . few . eur . nl >
* Copyright ( c ) 1993 Branko Lankester < branko @ hacktic . nl >
* Copyright ( c ) 1993 , 1994 , 1995 , 1996 Rick Sladkey < jrs @ world . std . com >
1999-12-23 14:20:14 +00:00
* Copyright ( c ) 1996 - 1999 Wichert Akkerman < wichert @ cistron . nl >
2003-06-02 19:18:58 +00:00
* Copyright ( c ) 2000 PocketPenguins Inc . Linux for Hitachi SuperH
* port by Greg Banks < gbanks @ pocketpenguins . com >
1999-02-19 00:21:36 +00:00
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
* 2. 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 .
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ` ` 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 AUTHOR 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 .
*
* $ Id $
*/
# include "defs.h"
1999-05-09 00:29:58 +00:00
# ifdef LINUX
2004-03-02 06:16:59 +00:00
# include <asm/mman.h>
1999-02-19 00:21:36 +00:00
# endif
1999-05-09 00:29:58 +00:00
# include <sys/mman.h>
1999-03-15 19:49:42 +00:00
2002-12-22 03:34:36 +00:00
# if defined(LINUX) && defined(I386)
2011-08-19 16:01:51 +02:00
# include <asm / ldt.h>
2004-03-01 22:10:52 +00:00
# ifdef HAVE_STRUCT_USER_DESC
# define modify_ldt_ldt_s user_desc
# endif
1999-02-19 00:21:36 +00:00
# endif
2003-06-26 22:40:42 +00:00
# if defined(LINUX) && defined(SH64)
2011-08-19 16:01:51 +02:00
# include <asm / page.h> /* for PAGE_SHIFT */
2003-06-02 19:18:58 +00:00
# endif
1999-02-19 00:21:36 +00:00
2001-03-08 13:59:00 +00:00
# ifdef HAVE_LONG_LONG_OFF_T
/*
* Ugly hacks for systems that have a long long off_t
*/
# define sys_mmap64 sys_mmap
# endif
1999-02-19 00:21:36 +00:00
int
2011-05-30 14:00:14 +02:00
sys_brk ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
}
1999-03-15 19:49:42 +00:00
# ifdef LINUX
1999-02-19 00:21:36 +00:00
return RVAL_HEX ;
# else
return 0 ;
# endif
}
2006-12-13 16:59:44 +00:00
# if defined(FREEBSD) || defined(SUNOS4)
1999-02-19 00:21:36 +00:00
int
2011-05-30 14:00:14 +02:00
sys_sbrk ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %lu " , tcp - > u_arg [ 0 ] ) ;
}
return RVAL_HEX ;
}
2006-12-13 16:59:44 +00:00
# endif /* FREEBSD || SUNOS4 */
1999-02-19 00:21:36 +00:00
2004-09-04 03:39:20 +00:00
static const struct xlat mmap_prot [ ] = {
1999-02-19 00:21:36 +00:00
{ PROT_NONE , " PROT_NONE " , } ,
{ PROT_READ , " PROT_READ " } ,
{ PROT_WRITE , " PROT_WRITE " } ,
{ PROT_EXEC , " PROT_EXEC " } ,
2003-09-25 23:06:04 +00:00
# ifdef PROT_SEM
{ PROT_SEM , " PROT_SEM " } ,
# endif
# ifdef PROT_GROWSDOWN
{ PROT_GROWSDOWN , " PROT_GROWSDOWN " } ,
# endif
# ifdef PROT_GROWSUP
{ PROT_GROWSUP , " PROT_GROWSUP " } ,
2008-08-25 03:00:47 +00:00
# endif
# ifdef PROT_SAO
{ PROT_SAO , " PROT_SAO " } ,
2003-09-25 23:06:04 +00:00
# endif
1999-02-19 00:21:36 +00:00
{ 0 , NULL } ,
} ;
2004-09-04 03:39:20 +00:00
static const struct xlat mmap_flags [ ] = {
1999-02-19 00:21:36 +00:00
{ MAP_SHARED , " MAP_SHARED " } ,
{ MAP_PRIVATE , " MAP_PRIVATE " } ,
{ MAP_FIXED , " MAP_FIXED " } ,
# ifdef MAP_ANONYMOUS
{ MAP_ANONYMOUS , " MAP_ANONYMOUS " } ,
# endif
2007-03-29 23:30:09 +00:00
# ifdef MAP_32BIT
{ MAP_32BIT , " MAP_32BIT " } ,
# endif
1999-02-19 00:21:36 +00:00
# ifdef MAP_RENAME
{ MAP_RENAME , " MAP_RENAME " } ,
# endif
# ifdef MAP_NORESERVE
{ MAP_NORESERVE , " MAP_NORESERVE " } ,
2003-03-05 04:08:00 +00:00
# endif
# ifdef MAP_POPULATE
{ MAP_POPULATE , " MAP_POPULATE " } ,
# endif
# ifdef MAP_NONBLOCK
{ MAP_NONBLOCK , " MAP_NONBLOCK " } ,
1999-02-19 00:21:36 +00:00
# endif
1999-06-11 13:18:40 +00:00
/*
* XXX - this was introduced in SunOS 4. x to distinguish between
* the old pre - 4. x " mmap() " , which :
*
* only let you map devices with an " mmap " routine ( e . g . ,
* frame buffers ) in ;
*
* required you to specify the mapping address ;
*
* returned 0 on success and - 1 on failure ;
*
* memory and which , and the 4. x " mmap() " which :
*
* can map plain files ;
*
* can be asked to pick where to map the file ;
*
* returns the address where it mapped the file on success
* and - 1 on failure .
*
* It ' s not actually used in source code that calls " mmap() " ; the
* " mmap() " routine adds it for you .
*
* It ' d be nice to come up with some way of eliminating it from
* the flags , e . g . reporting calls * without * it as " old_mmap() "
* and calls with it as " mmap() " .
*/
1999-02-19 00:21:36 +00:00
# ifdef _MAP_NEW
{ _MAP_NEW , " _MAP_NEW " } ,
# endif
# ifdef MAP_GROWSDOWN
{ MAP_GROWSDOWN , " MAP_GROWSDOWN " } ,
# endif
# ifdef MAP_DENYWRITE
{ MAP_DENYWRITE , " MAP_DENYWRITE " } ,
# endif
# ifdef MAP_EXECUTABLE
{ MAP_EXECUTABLE , " MAP_EXECUTABLE " } ,
# endif
1999-11-18 17:09:47 +00:00
# ifdef MAP_INHERIT
{ MAP_INHERIT , " MAP_INHERIT " } ,
# endif
1999-02-19 00:21:36 +00:00
# ifdef MAP_FILE
{ MAP_FILE , " MAP_FILE " } ,
# endif
# ifdef MAP_LOCKED
{ MAP_LOCKED , " MAP_LOCKED " } ,
2000-09-01 21:03:06 +00:00
# endif
/* FreeBSD ones */
# ifdef MAP_ANON
{ MAP_ANON , " MAP_ANON " } ,
# endif
# ifdef MAP_HASSEMAPHORE
{ MAP_HASSEMAPHORE , " MAP_HASSEMAPHORE " } ,
# endif
# ifdef MAP_STACK
{ MAP_STACK , " MAP_STACK " } ,
# endif
# ifdef MAP_NOSYNC
{ MAP_NOSYNC , " MAP_NOSYNC " } ,
# endif
# ifdef MAP_NOCORE
{ MAP_NOCORE , " MAP_NOCORE " } ,
2009-12-28 10:00:15 -05:00
# endif
# ifdef TILE
{ MAP_CACHE_NO_LOCAL , " MAP_CACHE_NO_LOCAL " } ,
{ MAP_CACHE_NO_L2 , " MAP_CACHE_NO_L2 " } ,
{ MAP_CACHE_NO_L1 , " MAP_CACHE_NO_L1 " } ,
1999-02-19 00:21:36 +00:00
# endif
{ 0 , NULL } ,
} ;
2009-12-28 10:00:15 -05:00
# ifdef TILE
2011-08-19 16:01:51 +02:00
static int
addtileflags ( long flags )
2009-12-28 10:00:15 -05:00
{
long home = flags & _MAP_CACHE_MKHOME ( _MAP_CACHE_HOME_MASK ) ;
flags & = ~ _MAP_CACHE_MKHOME ( _MAP_CACHE_HOME_MASK ) ;
if ( flags & _MAP_CACHE_INCOHERENT ) {
flags & = ~ _MAP_CACHE_INCOHERENT ;
if ( home = = MAP_CACHE_HOME_NONE ) {
2011-09-01 10:00:28 +02:00
tprints ( " |MAP_CACHE_INCOHERENT " ) ;
2009-12-28 10:00:15 -05:00
return flags ;
}
2011-09-01 10:00:28 +02:00
tprints ( " |_MAP_CACHE_INCOHERENT " ) ;
2009-12-28 10:00:15 -05:00
}
switch ( home ) {
case 0 : break ;
2011-09-01 10:00:28 +02:00
case MAP_CACHE_HOME_HERE : tprints ( " |MAP_CACHE_HOME_HERE " ) ; break ;
case MAP_CACHE_HOME_NONE : tprints ( " |MAP_CACHE_HOME_NONE " ) ; break ;
case MAP_CACHE_HOME_SINGLE : tprints ( " |MAP_CACHE_HOME_SINGLE " ) ; break ;
case MAP_CACHE_HOME_TASK : tprints ( " |MAP_CACHE_HOME_TASK " ) ; break ;
case MAP_CACHE_HOME_HASH : tprints ( " |MAP_CACHE_HOME_HASH " ) ; break ;
2009-12-28 10:00:15 -05:00
default :
tprintf ( " |MAP_CACHE_HOME(%d) " ,
( home > > _MAP_CACHE_HOME_SHIFT ) ) ;
break ;
}
return flags ;
}
# endif
2001-03-08 13:59:00 +00:00
# if !HAVE_LONG_LONG_OFF_T
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
static int
print_mmap ( struct tcb * tcp , long * u_arg , long long offset )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
/* addr */
1999-06-11 13:18:40 +00:00
if ( ! u_arg [ 0 ] )
2011-09-01 10:00:28 +02:00
tprints ( " NULL, " ) ;
1999-06-11 13:18:40 +00:00
else
tprintf ( " %#lx, " , u_arg [ 0 ] ) ;
1999-02-19 00:21:36 +00:00
/* len */
tprintf ( " %lu, " , u_arg [ 1 ] ) ;
/* prot */
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_prot , u_arg [ 2 ] , " PROT_??? " ) ;
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
1999-02-19 00:21:36 +00:00
/* flags */
2000-09-01 21:03:06 +00:00
# ifdef MAP_TYPE
1999-02-19 00:21:36 +00:00
printxval ( mmap_flags , u_arg [ 3 ] & MAP_TYPE , " MAP_??? " ) ;
2009-12-28 10:00:15 -05:00
# ifdef TILE
addflags ( mmap_flags , addtileflags ( u_arg [ 3 ] & ~ MAP_TYPE ) ) ;
# else
1999-02-19 00:21:36 +00:00
addflags ( mmap_flags , u_arg [ 3 ] & ~ MAP_TYPE ) ;
2009-12-28 10:00:15 -05:00
# endif
2000-09-01 21:03:06 +00:00
# else
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_flags , u_arg [ 3 ] , " MAP_??? " ) ;
2000-09-01 21:03:06 +00:00
# endif
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
/* fd */
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
printfd ( tcp , u_arg [ 4 ] ) ;
1999-02-19 00:21:36 +00:00
/* offset */
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
tprintf ( " , %#llx " , offset ) ;
1999-02-19 00:21:36 +00:00
}
return RVAL_HEX ;
}
1999-12-23 14:20:14 +00:00
# ifdef LINUX
2011-05-30 14:00:14 +02:00
int sys_old_mmap ( struct tcb * tcp )
1999-12-23 14:20:14 +00:00
{
2011-08-19 16:01:51 +02:00
# if defined(IA64)
2008-12-30 18:47:55 +00:00
/*
2011-08-19 17:07:38 +02:00
* IA64 processes never call this routine , they only use the
* new ` sys_mmap ' interface .
* For IA32 processes , this code converts the integer arguments
* that they pushed onto the stack , into longs .
2008-12-30 18:47:55 +00:00
*
2011-08-19 17:07:38 +02:00
* Note that addresses with bit 31 set will be sign extended .
* Fortunately , those addresses are not currently being generated
* for IA32 processes so it ' s not a problem .
2008-12-30 18:47:55 +00:00
*/
2011-08-19 17:07:38 +02:00
int i ;
long u_arg [ 6 ] ;
int narrow_arg [ 6 ] ;
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof ( narrow_arg ) , ( char * ) narrow_arg ) = = - 1 )
return 0 ;
2008-12-30 18:47:55 +00:00
for ( i = 0 ; i < 6 ; i + + )
2011-08-19 17:07:38 +02:00
u_arg [ i ] = narrow_arg [ i ] ;
2003-06-26 22:40:42 +00:00
# elif defined(SH) || defined(SH64)
2008-12-30 18:47:55 +00:00
/* SH has always passed the args in registers */
2011-08-19 17:07:38 +02:00
long * u_arg = tcp - > u_arg ;
2003-03-31 01:05:01 +00:00
# else
2011-08-19 17:07:38 +02:00
long u_arg [ 6 ] ;
2005-07-05 09:50:18 +00:00
# if defined(X86_64)
2008-12-30 18:47:55 +00:00
if ( current_personality = = 1 ) {
int i ;
2011-08-19 17:07:38 +02:00
unsigned narrow_arg [ 6 ] ;
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof ( narrow_arg ) , ( char * ) narrow_arg ) = = - 1 )
return 0 ;
for ( i = 0 ; i < 6 ; + + i )
u_arg [ i ] = narrow_arg [ i ] ;
2008-12-30 18:47:55 +00:00
}
else
2005-07-05 09:50:18 +00:00
# endif
2011-08-19 17:07:38 +02:00
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof ( u_arg ) , ( char * ) u_arg ) = = - 1 )
2008-12-30 18:47:55 +00:00
return 0 ;
2011-08-19 17:07:38 +02:00
# endif /* other architectures */
2008-12-30 18:47:55 +00:00
return print_mmap ( tcp , u_arg , u_arg [ 5 ] ) ;
1999-12-23 14:20:14 +00:00
}
2011-08-19 16:01:51 +02:00
# endif /* LINUX */
1999-12-23 14:20:14 +00:00
int
2011-05-30 14:00:14 +02:00
sys_mmap ( struct tcb * tcp )
1999-12-23 14:20:14 +00:00
{
2008-12-30 18:47:55 +00:00
long long offset = tcp - > u_arg [ 5 ] ;
2008-05-20 01:11:56 +00:00
2011-08-19 17:07:38 +02:00
/* FIXME: why only SH64? i386 mmap2 syscall ends up
* in this function , but does not convert offset
* from pages to bytes . See test / mmap_offset_decode . c
* Why SH64 and i386 are handled differently ?
*/
2003-06-26 22:40:42 +00:00
# if defined(LINUX) && defined(SH64)
2008-12-30 18:47:55 +00:00
/*
* Old mmap differs from new mmap in specifying the
* offset in units of bytes rather than pages . We
* pretend it ' s in byte units so the user only ever
* sees bytes in the printout .
*/
offset < < = PAGE_SHIFT ;
2008-05-20 01:11:56 +00:00
# endif
# if defined(LINUX_MIPSN32)
2008-12-30 18:47:55 +00:00
offset = tcp - > ext_arg [ 5 ] ;
2003-06-02 19:18:58 +00:00
# endif
2008-12-30 18:47:55 +00:00
return print_mmap ( tcp , tcp - > u_arg , offset ) ;
1999-12-23 14:20:14 +00:00
}
2001-03-08 13:59:00 +00:00
# endif /* !HAVE_LONG_LONG_OFF_T */
1999-12-23 14:20:14 +00:00
2001-03-08 13:59:00 +00:00
# if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T
2011-08-23 17:51:58 +02:00
/* TODO: comment which arches use this routine.
* For one , does ALPHA on Linux use this ? ?
* From code it seems that it might use 7 or 8 registers ,
* which is strange - Linux syscalls can pass maximum of 6 parameters !
*/
2001-03-06 15:08:09 +00:00
int
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
sys_mmap64 ( struct tcb * tcp )
2001-03-06 15:08:09 +00:00
{
if ( entering ( tcp ) ) {
2011-08-19 16:11:07 +02:00
# if !defined(LINUX) || defined(ALPHA)
long * u_arg = tcp - > u_arg ;
# else
long u_arg [ 7 ] ;
2001-03-06 15:08:09 +00:00
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof u_arg ,
( char * ) u_arg ) = = - 1 )
return 0 ;
2011-08-19 16:11:07 +02:00
# endif
2001-03-06 15:08:09 +00:00
/* addr */
tprintf ( " %#lx, " , u_arg [ 0 ] ) ;
/* len */
tprintf ( " %lu, " , u_arg [ 1 ] ) ;
/* prot */
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_prot , u_arg [ 2 ] , " PROT_??? " ) ;
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2001-03-06 15:08:09 +00:00
/* flags */
2001-03-07 13:21:24 +00:00
# ifdef MAP_TYPE
2001-03-06 15:08:09 +00:00
printxval ( mmap_flags , u_arg [ 3 ] & MAP_TYPE , " MAP_??? " ) ;
addflags ( mmap_flags , u_arg [ 3 ] & ~ MAP_TYPE ) ;
2001-03-07 13:21:24 +00:00
# else
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_flags , u_arg [ 3 ] , " MAP_??? " ) ;
2001-03-07 13:21:24 +00:00
# endif
2001-03-06 15:08:09 +00:00
/* fd */
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2011-08-23 17:51:58 +02:00
printfd ( tcp , u_arg [ 4 ] ) ;
2001-03-06 15:08:09 +00:00
/* offset */
2011-08-23 17:51:58 +02:00
# if !defined(LINUX) || defined(ALPHA)
Fix decoding of file descriptors
* defs.h (printfd): New function prototype.
* util.c (printfd): New function.
* file.c (print_dirfd): Update prototype to use printfd().
(sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat,
sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat,
sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd().
(sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64,
sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64,
sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync,
sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr,
sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64,
sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch,
sys_fallocate): Use printfd() for decoding of file descriptors.
* desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2,
decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for
decoding of file descriptors.
* io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread,
sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64,
sys_ioctl): Likewise.
* mem.c (print_mmap, sys_mmap64): Likewise.
* signal.c (do_signalfd): Likewise.
* stream.c (decode_poll): Likewise.
* time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise.
Based on patch from Grant Edwards <grant.b.edwards@gmail.com>.
2011-03-04 05:08:02 +03:00
printllval ( tcp , " , %#llx " , 5 ) ;
2011-08-23 17:51:58 +02:00
# else
/* NOTE: not verified that [5] and [6] should be used.
* It ' s possible that long long is 64 - bit aligned in memory
* and we need to use [ 6 ] and [ 7 ] here instead :
*/
tprintf ( " , %#llx " , LONG_LONG ( u_arg [ 5 ] , u_arg [ 6 ] ) ) ;
# endif
2001-03-06 15:08:09 +00:00
}
return RVAL_HEX ;
}
2011-08-19 16:11:07 +02:00
# endif /* _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T */
2001-03-06 15:08:09 +00:00
2002-12-22 03:34:36 +00:00
1999-02-19 00:21:36 +00:00
int
2011-05-30 14:00:14 +02:00
sys_munmap ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu " ,
tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
int
2011-05-30 14:00:14 +02:00
sys_mprotect ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " ,
tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_prot , tcp - > u_arg [ 2 ] , " PROT_??? " ) ;
1999-02-19 00:21:36 +00:00
}
return 0 ;
}
1999-05-09 00:29:58 +00:00
# ifdef LINUX
2004-09-04 03:39:20 +00:00
static const struct xlat mremap_flags [ ] = {
2000-05-01 01:53:59 +00:00
{ MREMAP_MAYMOVE , " MREMAP_MAYMOVE " } ,
2009-12-24 23:19:19 +00:00
# ifdef MREMAP_FIXED
{ MREMAP_FIXED , " MREMAP_FIXED " } ,
# endif
2000-05-01 01:53:59 +00:00
{ 0 , NULL }
1999-05-09 00:29:58 +00:00
} ;
int
2009-12-24 23:34:58 +00:00
sys_mremap ( struct tcb * tcp )
1999-05-09 00:29:58 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ,
tcp - > u_arg [ 2 ] ) ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mremap_flags , tcp - > u_arg [ 3 ] , " MREMAP_??? " ) ;
2009-12-24 23:34:58 +00:00
# ifdef MREMAP_FIXED
if ( ( tcp - > u_arg [ 3 ] & ( MREMAP_MAYMOVE | MREMAP_FIXED ) ) = =
( MREMAP_MAYMOVE | MREMAP_FIXED ) )
tprintf ( " , %#lx " , tcp - > u_arg [ 4 ] ) ;
# endif
1999-05-09 00:29:58 +00:00
}
return RVAL_HEX ;
}
2008-08-25 02:59:36 +00:00
static const struct xlat madvise_cmds [ ] = {
2000-04-10 22:22:31 +00:00
# ifdef MADV_NORMAL
{ MADV_NORMAL , " MADV_NORMAL " } ,
# endif
2008-08-25 02:59:36 +00:00
# ifdef MADV_RANDOM
2000-04-10 22:22:31 +00:00
{ MADV_RANDOM , " MADV_RANDOM " } ,
# endif
# ifdef MADV_SEQUENTIAL
{ MADV_SEQUENTIAL , " MADV_SEQUENTIAL " } ,
# endif
# ifdef MADV_WILLNEED
{ MADV_WILLNEED , " MADV_WILLNEED " } ,
# endif
2008-08-25 02:59:36 +00:00
# ifdef MADV_DONTNEED
2000-04-10 22:22:31 +00:00
{ MADV_DONTNEED , " MADV_DONTNEED " } ,
# endif
{ 0 , NULL } ,
} ;
int
2011-05-30 14:00:14 +02:00
sys_madvise ( struct tcb * tcp )
2000-04-10 22:22:31 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
2008-08-25 02:59:36 +00:00
printxval ( madvise_cmds , tcp - > u_arg [ 2 ] , " MADV_??? " ) ;
2000-04-10 22:22:31 +00:00
}
return 0 ;
}
2004-09-04 03:39:20 +00:00
static const struct xlat mlockall_flags [ ] = {
2000-04-10 22:22:31 +00:00
# ifdef MCL_CURRENT
{ MCL_CURRENT , " MCL_CURRENT " } ,
# endif
# ifdef MCL_FUTURE
{ MCL_FUTURE , " MCL_FUTURE " } ,
# endif
{ 0 , NULL }
} ;
int
2011-05-30 14:00:14 +02:00
sys_mlockall ( struct tcb * tcp )
2000-04-10 22:22:31 +00:00
{
if ( entering ( tcp ) ) {
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mlockall_flags , tcp - > u_arg [ 0 ] , " MCL_??? " ) ;
2000-04-10 22:22:31 +00:00
}
return 0 ;
}
1999-05-09 00:29:58 +00:00
# endif /* LINUX */
1999-02-19 00:21:36 +00:00
# ifdef MS_ASYNC
2004-09-04 03:39:20 +00:00
static const struct xlat mctl_sync [ ] = {
1999-02-19 00:21:36 +00:00
# ifdef MS_SYNC
{ MS_SYNC , " MS_SYNC " } ,
# endif
2001-10-16 18:12:27 +00:00
{ MS_ASYNC , " MS_ASYNC " } ,
{ MS_INVALIDATE , " MS_INVALIDATE " } ,
1999-02-19 00:21:36 +00:00
{ 0 , NULL } ,
} ;
int
2011-05-30 14:00:14 +02:00
sys_msync ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
/* addr */
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
/* len */
tprintf ( " , %lu, " , tcp - > u_arg [ 1 ] ) ;
/* flags */
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mctl_sync , tcp - > u_arg [ 2 ] , " MS_??? " ) ;
1999-02-19 00:21:36 +00:00
}
return 0 ;
}
# endif /* MS_ASYNC */
# ifdef MC_SYNC
2004-09-04 03:39:20 +00:00
static const struct xlat mctl_funcs [ ] = {
1999-02-19 00:21:36 +00:00
{ MC_LOCK , " MC_LOCK " } ,
{ MC_LOCKAS , " MC_LOCKAS " } ,
{ MC_SYNC , " MC_SYNC " } ,
{ MC_UNLOCK , " MC_UNLOCK " } ,
{ MC_UNLOCKAS , " MC_UNLOCKAS " } ,
{ 0 , NULL } ,
} ;
2004-09-04 03:39:20 +00:00
static const struct xlat mctl_lockas [ ] = {
1999-02-19 00:21:36 +00:00
{ MCL_CURRENT , " MCL_CURRENT " } ,
{ MCL_FUTURE , " MCL_FUTURE " } ,
{ 0 , NULL } ,
} ;
int
2011-05-30 14:00:14 +02:00
sys_mctl ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
int arg , function ;
if ( entering ( tcp ) ) {
/* addr */
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
/* len */
tprintf ( " , %lu, " , tcp - > u_arg [ 1 ] ) ;
/* function */
function = tcp - > u_arg [ 2 ] ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mctl_funcs , function , " MC_??? " ) ;
1999-02-19 00:21:36 +00:00
/* arg */
arg = tcp - > u_arg [ 3 ] ;
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
1999-02-19 00:21:36 +00:00
switch ( function ) {
case MC_SYNC :
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mctl_sync , arg , " MS_??? " ) ;
1999-02-19 00:21:36 +00:00
break ;
case MC_LOCKAS :
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mctl_lockas , arg , " MCL_??? " ) ;
1999-02-19 00:21:36 +00:00
break ;
default :
tprintf ( " %#x " , arg ) ;
break ;
}
}
return 0 ;
}
# endif /* MC_SYNC */
int
2011-05-30 14:00:14 +02:00
sys_mincore ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
} else {
2011-08-31 14:00:02 +02:00
unsigned long i , len ;
char * vec = NULL ;
1999-02-19 00:21:36 +00:00
len = tcp - > u_arg [ 1 ] ;
if ( syserror ( tcp ) | | tcp - > u_arg [ 2 ] = = 0 | |
2005-06-01 18:55:42 +00:00
( vec = malloc ( len ) ) = = NULL | |
1999-02-19 00:21:36 +00:00
umoven ( tcp , tcp - > u_arg [ 2 ] , len , vec ) < 0 )
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
else {
2011-09-01 10:00:28 +02:00
tprints ( " [ " ) ;
1999-02-19 00:21:36 +00:00
for ( i = 0 ; i < len ; i + + ) {
if ( abbrev ( tcp ) & & i > = max_strlen ) {
2011-09-01 10:00:28 +02:00
tprints ( " ... " ) ;
1999-02-19 00:21:36 +00:00
break ;
}
2011-09-01 10:00:28 +02:00
tprints ( ( vec [ i ] & 1 ) ? " 1 " : " 0 " ) ;
1999-02-19 00:21:36 +00:00
}
2011-09-01 10:00:28 +02:00
tprints ( " ] " ) ;
1999-02-19 00:21:36 +00:00
}
2011-08-31 14:00:02 +02:00
free ( vec ) ;
1999-02-19 00:21:36 +00:00
}
return 0 ;
}
2007-09-12 01:26:29 +00:00
# if defined(ALPHA) || defined(FREEBSD) || defined(IA64) || defined(SUNOS4) || defined(SVR4) || defined(SPARC) || defined(SPARC64)
1999-02-19 00:21:36 +00:00
int
2011-05-30 14:00:14 +02:00
sys_getpagesize ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( exiting ( tcp ) )
return RVAL_HEX ;
return 0 ;
}
2006-12-13 16:59:44 +00:00
# endif /* ALPHA || FREEBSD || IA64 || SUNOS4 || SVR4 */
1999-02-19 00:21:36 +00:00
# if defined(LINUX) && defined(__i386__)
2002-12-22 03:34:36 +00:00
void
2009-01-23 16:10:22 +00:00
print_ldt_entry ( struct modify_ldt_ldt_s * ldt_entry )
2002-12-15 23:58:17 +00:00
{
tprintf ( " base_addr:%#08lx, "
" limit:%d, "
" seg_32bit:%d, "
" contents:%d, "
" read_exec_only:%d, "
" limit_in_pages:%d, "
" seg_not_present:%d, "
" useable:%d} " ,
2009-01-23 16:10:22 +00:00
( long ) ldt_entry - > base_addr ,
2002-12-15 23:58:17 +00:00
ldt_entry - > limit ,
ldt_entry - > seg_32bit ,
ldt_entry - > contents ,
ldt_entry - > read_exec_only ,
ldt_entry - > limit_in_pages ,
ldt_entry - > seg_not_present ,
ldt_entry - > useable ) ;
}
1999-02-19 00:21:36 +00:00
int
2011-05-30 14:00:14 +02:00
sys_modify_ldt ( struct tcb * tcp )
1999-02-19 00:21:36 +00:00
{
if ( entering ( tcp ) ) {
struct modify_ldt_ldt_s copy ;
tprintf ( " %ld " , tcp - > u_arg [ 0 ] ) ;
if ( tcp - > u_arg [ 1 ] = = 0
2011-06-07 12:13:24 +02:00
| | tcp - > u_arg [ 2 ] ! = sizeof ( struct modify_ldt_ldt_s )
1999-02-19 00:21:36 +00:00
| | umove ( tcp , tcp - > u_arg [ 1 ] , & copy ) = = - 1 )
tprintf ( " , %lx " , tcp - > u_arg [ 1 ] ) ;
else {
tprintf ( " , {entry_number:%d, " , copy . entry_number ) ;
if ( ! verbose ( tcp ) )
2011-09-01 10:00:28 +02:00
tprints ( " ...} " ) ;
1999-02-19 00:21:36 +00:00
else {
2002-12-15 23:58:17 +00:00
print_ldt_entry ( & copy ) ;
1999-02-19 00:21:36 +00:00
}
}
tprintf ( " , %lu " , tcp - > u_arg [ 2 ] ) ;
}
return 0 ;
}
2002-12-15 23:58:17 +00:00
int
2011-05-30 14:00:14 +02:00
sys_set_thread_area ( struct tcb * tcp )
2002-12-15 23:58:17 +00:00
{
struct modify_ldt_ldt_s copy ;
if ( entering ( tcp ) ) {
if ( umove ( tcp , tcp - > u_arg [ 0 ] , & copy ) ! = - 1 ) {
if ( copy . entry_number = = - 1 )
tprintf ( " {entry_number:%d -> " ,
copy . entry_number ) ;
else
2011-09-01 10:00:28 +02:00
tprints ( " {entry_number: " ) ;
2002-12-15 23:58:17 +00:00
}
} else {
if ( umove ( tcp , tcp - > u_arg [ 0 ] , & copy ) ! = - 1 ) {
tprintf ( " %d, " , copy . entry_number ) ;
if ( ! verbose ( tcp ) )
2011-09-01 10:00:28 +02:00
tprints ( " ...} " ) ;
2002-12-15 23:58:17 +00:00
else {
print_ldt_entry ( & copy ) ;
}
} else {
tprintf ( " %lx " , tcp - > u_arg [ 0 ] ) ;
}
}
return 0 ;
2002-12-22 03:34:36 +00:00
2002-12-15 23:58:17 +00:00
}
int
2011-05-30 14:00:14 +02:00
sys_get_thread_area ( struct tcb * tcp )
2002-12-15 23:58:17 +00:00
{
struct modify_ldt_ldt_s copy ;
if ( exiting ( tcp ) ) {
if ( umove ( tcp , tcp - > u_arg [ 0 ] , & copy ) ! = - 1 ) {
tprintf ( " {entry_number:%d, " , copy . entry_number ) ;
if ( ! verbose ( tcp ) )
2011-09-01 10:00:28 +02:00
tprints ( " ...} " ) ;
2002-12-15 23:58:17 +00:00
else {
print_ldt_entry ( & copy ) ;
}
} else {
tprintf ( " %lx " , tcp - > u_arg [ 0 ] ) ;
}
}
return 0 ;
2002-12-22 03:34:36 +00:00
2002-12-15 23:58:17 +00:00
}
1999-02-19 00:21:36 +00:00
# endif /* LINUX && __i386__ */
2003-03-05 04:08:00 +00:00
2010-05-28 22:28:51 +02:00
# if defined(LINUX) && defined(M68K)
int
2011-05-30 14:00:14 +02:00
sys_set_thread_area ( struct tcb * tcp )
2010-05-28 22:28:51 +02:00
{
if ( entering ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
return 0 ;
}
int
2011-05-30 14:00:14 +02:00
sys_get_thread_area ( struct tcb * tcp )
2010-05-28 22:28:51 +02:00
{
return RVAL_HEX ;
}
# endif
2003-03-05 04:08:00 +00:00
# if defined(LINUX)
int
2011-05-30 14:00:14 +02:00
sys_remap_file_pages ( struct tcb * tcp )
2003-03-05 04:08:00 +00:00
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_prot , tcp - > u_arg [ 2 ] , " PROT_??? " ) ;
2003-03-05 04:08:00 +00:00
tprintf ( " , %lu, " , tcp - > u_arg [ 3 ] ) ;
# ifdef MAP_TYPE
printxval ( mmap_flags , tcp - > u_arg [ 4 ] & MAP_TYPE , " MAP_??? " ) ;
addflags ( mmap_flags , tcp - > u_arg [ 4 ] & ~ MAP_TYPE ) ;
# else
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mmap_flags , tcp - > u_arg [ 4 ] , " MAP_??? " ) ;
2003-03-05 04:08:00 +00:00
# endif
}
return 0 ;
}
2004-10-07 18:53:12 +00:00
# define MPOL_DEFAULT 0
# define MPOL_PREFERRED 1
# define MPOL_BIND 2
# define MPOL_INTERLEAVE 3
# define MPOL_F_NODE (1<<0)
# define MPOL_F_ADDR (1<<1)
# define MPOL_MF_STRICT (1<<0)
2007-07-24 01:52:58 +00:00
# define MPOL_MF_MOVE (1<<1)
# define MPOL_MF_MOVE_ALL (1<<2)
2004-10-07 18:53:12 +00:00
static const struct xlat policies [ ] = {
{ MPOL_DEFAULT , " MPOL_DEFAULT " } ,
{ MPOL_PREFERRED , " MPOL_PREFERRED " } ,
{ MPOL_BIND , " MPOL_BIND " } ,
{ MPOL_INTERLEAVE , " MPOL_INTERLEAVE " } ,
{ 0 , NULL }
} ;
static const struct xlat mbindflags [ ] = {
{ MPOL_MF_STRICT , " MPOL_MF_STRICT " } ,
2007-07-24 01:52:58 +00:00
{ MPOL_MF_MOVE , " MPOL_MF_MOVE " } ,
{ MPOL_MF_MOVE_ALL , " MPOL_MF_MOVE_ALL " } ,
2004-10-07 18:53:12 +00:00
{ 0 , NULL }
} ;
static const struct xlat mempolicyflags [ ] = {
{ MPOL_F_NODE , " MPOL_F_NODE " } ,
{ MPOL_F_ADDR , " MPOL_F_ADDR " } ,
{ 0 , NULL }
} ;
2007-07-24 01:52:58 +00:00
static const struct xlat move_pages_flags [ ] = {
{ MPOL_MF_MOVE , " MPOL_MF_MOVE " } ,
{ MPOL_MF_MOVE_ALL , " MPOL_MF_MOVE_ALL " } ,
{ 0 , NULL }
} ;
2004-10-07 18:53:12 +00:00
static void
2011-05-30 14:00:14 +02:00
get_nodes ( struct tcb * tcp , unsigned long ptr , unsigned long maxnodes , int err )
2004-10-07 18:53:12 +00:00
{
2005-06-01 19:22:06 +00:00
unsigned long nlongs , size , end ;
nlongs = ( maxnodes + 8 * sizeof ( long ) - 1 ) / ( 8 * sizeof ( long ) ) ;
size = nlongs * sizeof ( long ) ;
end = ptr + size ;
if ( nlongs = = 0 | | ( ( err | | verbose ( tcp ) ) & & ( size * 8 = = maxnodes )
& & ( end > ptr ) ) ) {
unsigned long n , cur , abbrev_end ;
int failed = 0 ;
if ( abbrev ( tcp ) ) {
abbrev_end = ptr + max_strlen * sizeof ( long ) ;
if ( abbrev_end < ptr )
abbrev_end = end ;
} else {
abbrev_end = end ;
}
2011-09-01 10:00:28 +02:00
tprints ( " , { " ) ;
2005-06-01 19:22:06 +00:00
for ( cur = ptr ; cur < end ; cur + = sizeof ( long ) ) {
if ( cur > ptr )
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2005-06-01 19:22:06 +00:00
if ( cur > = abbrev_end ) {
2011-09-01 10:00:28 +02:00
tprints ( " ... " ) ;
2005-06-01 19:22:06 +00:00
break ;
}
if ( umoven ( tcp , cur , sizeof ( n ) , ( char * ) & n ) < 0 ) {
2011-09-01 10:00:28 +02:00
tprints ( " ? " ) ;
2005-06-01 19:22:06 +00:00
failed = 1 ;
break ;
2004-10-07 18:53:12 +00:00
}
2005-06-01 19:22:06 +00:00
tprintf ( " %#0*lx " , ( int ) sizeof ( long ) * 2 + 2 , n ) ;
2004-10-07 18:53:12 +00:00
}
2011-09-01 10:00:28 +02:00
tprints ( " } " ) ;
2005-06-01 19:22:06 +00:00
if ( failed )
tprintf ( " %#lx " , ptr ) ;
2004-10-07 18:53:12 +00:00
} else
2005-06-01 19:22:06 +00:00
tprintf ( " , %#lx " , ptr ) ;
2004-10-07 18:53:12 +00:00
tprintf ( " , %lu " , maxnodes ) ;
}
int
2011-05-30 14:00:14 +02:00
sys_mbind ( struct tcb * tcp )
2004-10-07 18:53:12 +00:00
{
if ( entering ( tcp ) ) {
2009-12-24 23:19:35 +00:00
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
2004-10-07 18:53:12 +00:00
printxval ( policies , tcp - > u_arg [ 2 ] , " MPOL_??? " ) ;
get_nodes ( tcp , tcp - > u_arg [ 3 ] , tcp - > u_arg [ 4 ] , 0 ) ;
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mbindflags , tcp - > u_arg [ 5 ] , " MPOL_??? " ) ;
2004-10-07 18:53:12 +00:00
}
return 0 ;
}
int
2011-05-30 14:00:14 +02:00
sys_set_mempolicy ( struct tcb * tcp )
2004-10-07 18:53:12 +00:00
{
if ( entering ( tcp ) ) {
printxval ( policies , tcp - > u_arg [ 0 ] , " MPOL_??? " ) ;
get_nodes ( tcp , tcp - > u_arg [ 1 ] , tcp - > u_arg [ 2 ] , 0 ) ;
}
return 0 ;
}
int
2011-05-30 14:00:14 +02:00
sys_get_mempolicy ( struct tcb * tcp )
2004-10-07 18:53:12 +00:00
{
if ( exiting ( tcp ) ) {
int pol ;
if ( tcp - > u_arg [ 0 ] = = 0 )
2011-09-01 10:00:28 +02:00
tprints ( " NULL " ) ;
2004-10-07 18:53:12 +00:00
else if ( syserror ( tcp ) | | umove ( tcp , tcp - > u_arg [ 0 ] , & pol ) < 0 )
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
else
printxval ( policies , pol , " MPOL_??? " ) ;
get_nodes ( tcp , tcp - > u_arg [ 1 ] , tcp - > u_arg [ 2 ] , syserror ( tcp ) ) ;
tprintf ( " , %#lx, " , tcp - > u_arg [ 3 ] ) ;
2005-05-31 Dmitry V. Levin <ldv@altlinux.org>
* util.c (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument, "const char *", with similar
meaning to the third argument of printxval().
* defs.h (printxval): Change third argument from "char *" to
"const char *".
(printflags): Add third argument.
* bjm.c (sys_query_module) [LINUX]: Pass third argument to
printflags().
* desc.c (sys_fcntl): Likewise.
(sys_flock) [LOCK_SH]: Likewise.
(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
* file.c (sys_open): Likewise.
(solaris_open) [LINUXSPARC]: Likewise.
(sys_access): Likewise.
(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
(realprintstat) [HAVE_LONG_LONG_OFF_T &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(printstat64) [HAVE_STAT64 &&
HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
(sys_setxattr, sys_fsetxattr): Likewise.
* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
(sys_mq_open) [LINUX]: Likewise.
(printmqattr) [HAVE_MQUEUE_H]: Likewise.
* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
(sys_mprotect): Likewise.
(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
(sys_msync) [MS_ASYNC]: Likewise.
(sys_mctl) [MC_SYNC]: Likewise.
(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
Likewise.
* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
(sys_send, sys_sendto): Likewise.
(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
(sys_recv, sys_recvfrom): Likewise.
(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
(printicmpfilter) [ICMP_FILTER]: Likewise.
* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
* process.c (sys_clone) [LINUX]: Likewise.
(printwaitn): Likewise.
(sys_waitid) [SVR4 || LINUX]: Likewise.
* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
(sys_sigaction): Likewise.
(printcontext) [SVR4]: Likewise.
(print_stack_t) [LINUX) || FREEBSD]: Likewise.
(sys_rt_sigaction) [LINUX]: Likewise.
* sock.c (sock_ioctl) [LINUX]: Likewise.
* stream.c (sys_putmsg, sys_getmsg): Likewise.
(sys_putpmsg) [SYS_putpmsg]: Likewise.
(sys_getpmsg) [SYS_getpmsg]: Likewise.
(sys_poll): Likewise.
(print_transport_message) [TI_BIND]: Likewise.
(stream_ioctl): Likewise.
* system.c (sys_mount, sys_reboot): Likewise.
(sys_cacheflush) [LINUX && M68K]: Likewise.
(sys_capget, sys_capset) [SYS_capget]: Likewise.
* term.c (term_ioctl) [TIOCMGET]: Likewise.
* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
Likewise.
Fixes RH#159310.
2005-06-01 19:02:36 +00:00
printflags ( mempolicyflags , tcp - > u_arg [ 4 ] , " MPOL_??? " ) ;
2004-10-07 18:53:12 +00:00
}
return 0 ;
}
2007-07-24 01:52:58 +00:00
int
2011-05-30 14:00:14 +02:00
sys_move_pages ( struct tcb * tcp )
2007-07-24 01:52:58 +00:00
{
if ( entering ( tcp ) ) {
unsigned long npages = tcp - > u_arg [ 1 ] ;
tprintf ( " %ld, %lu, " , tcp - > u_arg [ 0 ] , npages ) ;
if ( tcp - > u_arg [ 2 ] = = 0 )
2011-09-01 10:00:28 +02:00
tprints ( " NULL, " ) ;
2007-07-24 01:52:58 +00:00
else {
int i ;
long puser = tcp - > u_arg [ 2 ] ;
2011-09-01 10:00:28 +02:00
tprints ( " { " ) ;
2007-07-24 01:52:58 +00:00
for ( i = 0 ; i < npages ; + + i ) {
void * p ;
if ( i > 0 )
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2007-07-24 01:52:58 +00:00
if ( umove ( tcp , puser , & p ) < 0 ) {
2011-09-01 10:00:28 +02:00
tprints ( " ??? " ) ;
2007-07-24 01:52:58 +00:00
break ;
}
tprintf ( " %p " , p ) ;
2011-06-07 12:13:24 +02:00
puser + = sizeof ( void * ) ;
2007-07-24 01:52:58 +00:00
}
2011-09-01 10:00:28 +02:00
tprints ( " }, " ) ;
2007-07-24 01:52:58 +00:00
}
if ( tcp - > u_arg [ 3 ] = = 0 )
2011-09-01 10:00:28 +02:00
tprints ( " NULL, " ) ;
2007-07-24 01:52:58 +00:00
else {
int i ;
long nodeuser = tcp - > u_arg [ 3 ] ;
2011-09-01 10:00:28 +02:00
tprints ( " { " ) ;
2007-07-24 01:52:58 +00:00
for ( i = 0 ; i < npages ; + + i ) {
int node ;
if ( i > 0 )
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2007-07-24 01:52:58 +00:00
if ( umove ( tcp , nodeuser , & node ) < 0 ) {
2011-09-01 10:00:28 +02:00
tprints ( " ??? " ) ;
2007-07-24 01:52:58 +00:00
break ;
}
tprintf ( " %#x " , node ) ;
2011-06-07 12:13:24 +02:00
nodeuser + = sizeof ( int ) ;
2007-07-24 01:52:58 +00:00
}
2011-09-01 10:00:28 +02:00
tprints ( " }, " ) ;
2007-07-24 01:52:58 +00:00
}
}
if ( exiting ( tcp ) ) {
unsigned long npages = tcp - > u_arg [ 1 ] ;
if ( tcp - > u_arg [ 4 ] = = 0 )
2011-09-01 10:00:28 +02:00
tprints ( " NULL, " ) ;
2007-07-24 01:52:58 +00:00
else {
int i ;
long statususer = tcp - > u_arg [ 4 ] ;
2011-09-01 10:00:28 +02:00
tprints ( " { " ) ;
2007-07-24 01:52:58 +00:00
for ( i = 0 ; i < npages ; + + i ) {
int status ;
if ( i > 0 )
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2007-07-24 01:52:58 +00:00
if ( umove ( tcp , statususer , & status ) < 0 ) {
2011-09-01 10:00:28 +02:00
tprints ( " ??? " ) ;
2007-07-24 01:52:58 +00:00
break ;
}
tprintf ( " %#x " , status ) ;
2011-06-07 12:13:24 +02:00
statususer + = sizeof ( int ) ;
2007-07-24 01:52:58 +00:00
}
2011-09-01 10:00:28 +02:00
tprints ( " }, " ) ;
2007-07-24 01:52:58 +00:00
}
printflags ( move_pages_flags , tcp - > u_arg [ 5 ] , " MPOL_??? " ) ;
}
return 0 ;
}
2003-03-05 04:08:00 +00:00
# endif
2008-08-25 03:09:16 +00:00
# if defined(LINUX) && defined(POWERPC)
int
2011-05-30 14:00:14 +02:00
sys_subpage_prot ( struct tcb * tcp )
2008-08-25 03:09:16 +00:00
{
if ( entering ( tcp ) ) {
unsigned long cur , end , abbrev_end , entries ;
unsigned int entry ;
tprintf ( " %#lx, %#lx, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
entries = tcp - > u_arg [ 1 ] > > 16 ;
if ( ! entries | | ! tcp - > u_arg [ 2 ] ) {
2011-09-01 10:00:28 +02:00
tprints ( " {} " ) ;
2008-08-25 03:09:16 +00:00
return 0 ;
}
cur = tcp - > u_arg [ 2 ] ;
end = cur + ( sizeof ( int ) * entries ) ;
if ( ! verbose ( tcp ) | | end < tcp - > u_arg [ 2 ] ) {
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
return 0 ;
}
if ( abbrev ( tcp ) ) {
abbrev_end = cur + ( sizeof ( int ) * max_strlen ) ;
if ( abbrev_end > end )
abbrev_end = end ;
}
else
abbrev_end = end ;
2011-09-01 10:00:28 +02:00
tprints ( " { " ) ;
2008-08-25 03:09:16 +00:00
for ( ; cur < end ; cur + = sizeof ( int ) ) {
if ( cur > tcp - > u_arg [ 2 ] )
2011-09-01 10:00:28 +02:00
tprints ( " , " ) ;
2008-08-25 03:09:16 +00:00
if ( cur > = abbrev_end ) {
2011-09-01 10:00:28 +02:00
tprints ( " ... " ) ;
2008-08-25 03:09:16 +00:00
break ;
}
if ( umove ( tcp , cur , & entry ) < 0 ) {
tprintf ( " ??? [%#lx] " , cur ) ;
break ;
}
else
tprintf ( " %#08x " , entry ) ;
}
2011-09-01 10:00:28 +02:00
tprints ( " } " ) ;
2008-08-25 03:09:16 +00:00
}
return 0 ;
}
# endif