1999-02-19 03:21:36 +03: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 17:20:14 +03:00
* Copyright ( c ) 1996 - 1999 Wichert Akkerman < wichert @ cistron . nl >
2003-06-02 23:18:58 +04:00
* Copyright ( c ) 2000 PocketPenguins Inc . Linux for Hitachi SuperH
* port by Greg Banks < gbanks @ pocketpenguins . com >
1999-02-19 03:21:36 +03: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 04:29:58 +04:00
# ifdef LINUX
2004-03-02 09:16:59 +03:00
# include <asm/mman.h>
1999-02-19 03:21:36 +03:00
# endif
1999-05-09 04:29:58 +04:00
# include <sys/mman.h>
1999-03-15 22:49:42 +03:00
2002-12-22 06:34:36 +03:00
# if defined(LINUX) && defined(I386)
1999-04-21 19:57:38 +04:00
# include <asm/ldt.h>
2004-03-02 01:10:52 +03:00
# ifdef HAVE_STRUCT_USER_DESC
# define modify_ldt_ldt_s user_desc
# endif
1999-02-19 03:21:36 +03:00
# endif
2003-06-27 02:40:42 +04:00
# if defined(LINUX) && defined(SH64)
2003-06-02 23:18:58 +04:00
# include <asm/page.h> /* for PAGE_SHIFT */
# endif
1999-02-19 03:21:36 +03:00
2001-03-08 16:59:00 +03: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 03:21:36 +03:00
int
sys_brk ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
}
1999-03-15 22:49:42 +03:00
# ifdef LINUX
1999-02-19 03:21:36 +03:00
return RVAL_HEX ;
# else
return 0 ;
# endif
}
2006-12-13 19:59:44 +03:00
# if defined(FREEBSD) || defined(SUNOS4)
1999-02-19 03:21:36 +03:00
int
sys_sbrk ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %lu " , tcp - > u_arg [ 0 ] ) ;
}
return RVAL_HEX ;
}
2006-12-13 19:59:44 +03:00
# endif /* FREEBSD || SUNOS4 */
1999-02-19 03:21:36 +03:00
2004-09-04 07:39:20 +04:00
static const struct xlat mmap_prot [ ] = {
1999-02-19 03:21:36 +03:00
{ PROT_NONE , " PROT_NONE " , } ,
{ PROT_READ , " PROT_READ " } ,
{ PROT_WRITE , " PROT_WRITE " } ,
{ PROT_EXEC , " PROT_EXEC " } ,
2003-09-26 03:06:04 +04: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 07:00:47 +04:00
# endif
# ifdef PROT_SAO
{ PROT_SAO , " PROT_SAO " } ,
2003-09-26 03:06:04 +04:00
# endif
1999-02-19 03:21:36 +03:00
{ 0 , NULL } ,
} ;
2004-09-04 07:39:20 +04:00
static const struct xlat mmap_flags [ ] = {
1999-02-19 03:21:36 +03:00
{ MAP_SHARED , " MAP_SHARED " } ,
{ MAP_PRIVATE , " MAP_PRIVATE " } ,
{ MAP_FIXED , " MAP_FIXED " } ,
# ifdef MAP_ANONYMOUS
{ MAP_ANONYMOUS , " MAP_ANONYMOUS " } ,
# endif
2007-03-30 03:30:09 +04:00
# ifdef MAP_32BIT
{ MAP_32BIT , " MAP_32BIT " } ,
# endif
1999-02-19 03:21:36 +03:00
# ifdef MAP_RENAME
{ MAP_RENAME , " MAP_RENAME " } ,
# endif
# ifdef MAP_NORESERVE
{ MAP_NORESERVE , " MAP_NORESERVE " } ,
2003-03-05 07:08:00 +03:00
# endif
# ifdef MAP_POPULATE
{ MAP_POPULATE , " MAP_POPULATE " } ,
# endif
# ifdef MAP_NONBLOCK
{ MAP_NONBLOCK , " MAP_NONBLOCK " } ,
1999-02-19 03:21:36 +03:00
# endif
1999-06-11 17:18:40 +04: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 03:21:36 +03: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 20:09:47 +03:00
# ifdef MAP_INHERIT
{ MAP_INHERIT , " MAP_INHERIT " } ,
# endif
1999-02-19 03:21:36 +03:00
# ifdef MAP_FILE
{ MAP_FILE , " MAP_FILE " } ,
# endif
# ifdef MAP_LOCKED
{ MAP_LOCKED , " MAP_LOCKED " } ,
2000-09-02 01:03:06 +04: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 " } ,
1999-02-19 03:21:36 +03:00
# endif
{ 0 , NULL } ,
} ;
2001-03-08 16:59:00 +03:00
# if !HAVE_LONG_LONG_OFF_T
1999-12-23 17:20:14 +03:00
static
1999-02-19 03:21:36 +03:00
int
2008-05-20 05:11:56 +04:00
print_mmap ( tcp , u_arg , offset )
1999-02-19 03:21:36 +03:00
struct tcb * tcp ;
1999-12-23 17:20:14 +03:00
long * u_arg ;
2008-05-20 05:11:56 +04:00
long long offset ;
1999-02-19 03:21:36 +03:00
{
if ( entering ( tcp ) ) {
/* addr */
1999-06-11 17:18:40 +04:00
if ( ! u_arg [ 0 ] )
tprintf ( " NULL, " ) ;
else
tprintf ( " %#lx, " , u_arg [ 0 ] ) ;
1999-02-19 03:21:36 +03: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 23:02:36 +04:00
printflags ( mmap_prot , u_arg [ 2 ] , " PROT_??? " ) ;
1999-02-19 03:21:36 +03:00
tprintf ( " , " ) ;
/* flags */
2000-09-02 01:03:06 +04:00
# ifdef MAP_TYPE
1999-02-19 03:21:36 +03:00
printxval ( mmap_flags , u_arg [ 3 ] & MAP_TYPE , " MAP_??? " ) ;
addflags ( mmap_flags , u_arg [ 3 ] & ~ MAP_TYPE ) ;
2000-09-02 01:03:06 +04: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 23:02:36 +04:00
printflags ( mmap_flags , u_arg [ 3 ] , " MAP_??? " ) ;
2000-09-02 01:03:06 +04:00
# endif
2002-09-23 19:41:01 +04:00
/* fd (is always int, not long) */
tprintf ( " , %d, " , ( int ) u_arg [ 4 ] ) ;
1999-02-19 03:21:36 +03:00
/* offset */
2008-05-20 05:11:56 +04:00
tprintf ( " %#llx " , offset ) ;
1999-02-19 03:21:36 +03:00
}
return RVAL_HEX ;
}
1999-12-23 17:20:14 +03:00
# ifdef LINUX
int sys_old_mmap ( tcp )
struct tcb * tcp ;
{
2008-12-30 21:47:55 +03:00
long u_arg [ 6 ] ;
2000-02-04 00:58:30 +03:00
# if defined(IA64)
2008-12-30 21:47:55 +03:00
int i , v ;
/*
* IA64 processes never call this routine , they only use the
* new ` sys_mmap ' interface . This code converts the integer
* arguments that the IA32 process pushed onto the stack into
* longs .
*
* 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 .
*/
for ( i = 0 ; i < 6 ; i + + )
if ( umove ( tcp , tcp - > u_arg [ 0 ] + ( i * sizeof ( int ) ) , & v ) = = - 1 )
return 0 ;
else
u_arg [ i ] = v ;
2003-06-27 02:40:42 +04:00
# elif defined(SH) || defined(SH64)
2008-12-30 21:47:55 +03:00
/* SH has always passed the args in registers */
int i ;
for ( i = 0 ; i < 6 ; i + + )
u_arg [ i ] = tcp - > u_arg [ i ] ;
2003-03-31 05:05:01 +04:00
# else
2005-07-05 13:50:18 +04:00
# if defined(X86_64)
2008-12-30 21:47:55 +03:00
if ( current_personality = = 1 ) {
int i ;
for ( i = 0 ; i < 6 ; + + i ) {
unsigned int val ;
if ( umove ( tcp , tcp - > u_arg [ 0 ] + i * 4 , & val ) = = - 1 )
return 0 ;
u_arg [ i ] = val ;
}
}
else
2005-07-05 13:50:18 +04:00
# endif
2008-12-30 21:47:55 +03:00
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof u_arg , ( char * ) u_arg ) = = - 1 )
return 0 ;
2000-02-04 00:58:30 +03:00
# endif // defined(IA64)
2008-12-30 21:47:55 +03:00
return print_mmap ( tcp , u_arg , u_arg [ 5 ] ) ;
1999-12-23 17:20:14 +03:00
}
# endif
int
sys_mmap ( tcp )
struct tcb * tcp ;
{
2008-12-30 21:47:55 +03:00
long long offset = tcp - > u_arg [ 5 ] ;
2008-05-20 05:11:56 +04:00
2003-06-27 02:40:42 +04:00
# if defined(LINUX) && defined(SH64)
2008-12-30 21:47:55 +03: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 05:11:56 +04:00
# endif
# if defined(LINUX_MIPSN32)
2008-12-30 21:47:55 +03:00
offset = tcp - > ext_arg [ 5 ] ;
2003-06-02 23:18:58 +04:00
# endif
2008-12-30 21:47:55 +03:00
return print_mmap ( tcp , tcp - > u_arg , offset ) ;
1999-12-23 17:20:14 +03:00
}
2001-03-08 16:59:00 +03:00
# endif /* !HAVE_LONG_LONG_OFF_T */
1999-12-23 17:20:14 +03:00
2001-03-08 16:59:00 +03:00
# if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T
2001-03-06 18:08:09 +03:00
int
sys_mmap64 ( tcp )
struct tcb * tcp ;
{
# ifdef linux
# ifdef ALPHA
long * u_arg = tcp - > u_arg ;
# else /* !ALPHA */
long u_arg [ 7 ] ;
# endif /* !ALPHA */
# else /* !linux */
long * u_arg = tcp - > u_arg ;
# endif /* !linux */
if ( entering ( tcp ) ) {
# ifdef linux
# ifndef ALPHA
if ( umoven ( tcp , tcp - > u_arg [ 0 ] , sizeof u_arg ,
( char * ) u_arg ) = = - 1 )
return 0 ;
# endif /* ALPHA */
# endif /* linux */
/* 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 23:02:36 +04:00
printflags ( mmap_prot , u_arg [ 2 ] , " PROT_??? " ) ;
2001-03-06 18:08:09 +03:00
tprintf ( " , " ) ;
/* flags */
2001-03-07 16:21:24 +03:00
# ifdef MAP_TYPE
2001-03-06 18:08:09 +03:00
printxval ( mmap_flags , u_arg [ 3 ] & MAP_TYPE , " MAP_??? " ) ;
addflags ( mmap_flags , u_arg [ 3 ] & ~ MAP_TYPE ) ;
2001-03-07 16:21:24 +03: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 23:02:36 +04:00
printflags ( mmap_flags , u_arg [ 3 ] , " MAP_??? " ) ;
2001-03-07 16:21:24 +03:00
# endif
2001-03-06 18:08:09 +03:00
/* fd */
tprintf ( " , %ld, " , u_arg [ 4 ] ) ;
/* offset */
2009-11-04 19:08:34 +03:00
printllval ( tcp , " %#llx " , 5 ) ;
2001-03-06 18:08:09 +03:00
}
return RVAL_HEX ;
}
# endif
2002-12-22 06:34:36 +03:00
1999-02-19 03:21:36 +03:00
int
sys_munmap ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu " ,
tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
int
sys_mprotect ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mmap_prot , tcp - > u_arg [ 2 ] , " PROT_??? " ) ;
1999-02-19 03:21:36 +03:00
}
return 0 ;
}
1999-05-09 04:29:58 +04:00
# ifdef LINUX
2004-09-04 07:39:20 +04:00
static const struct xlat mremap_flags [ ] = {
2000-05-01 05:53:59 +04:00
{ MREMAP_MAYMOVE , " MREMAP_MAYMOVE " } ,
2009-12-25 02:19:19 +03:00
# ifdef MREMAP_FIXED
{ MREMAP_FIXED , " MREMAP_FIXED " } ,
# endif
2000-05-01 05:53:59 +04:00
{ 0 , NULL }
1999-05-09 04:29:58 +04:00
} ;
int
sys_mremap ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mremap_flags , tcp - > u_arg [ 3 ] , " MREMAP_??? " ) ;
1999-05-09 04:29:58 +04:00
}
return RVAL_HEX ;
}
2008-08-25 06:59:36 +04:00
static const struct xlat madvise_cmds [ ] = {
2000-04-11 02:22:31 +04:00
# ifdef MADV_NORMAL
{ MADV_NORMAL , " MADV_NORMAL " } ,
# endif
2008-08-25 06:59:36 +04:00
# ifdef MADV_RANDOM
2000-04-11 02:22:31 +04: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 06:59:36 +04:00
# ifdef MADV_DONTNEED
2000-04-11 02:22:31 +04:00
{ MADV_DONTNEED , " MADV_DONTNEED " } ,
# endif
{ 0 , NULL } ,
} ;
int
sys_madvise ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
2008-08-25 06:59:36 +04:00
printxval ( madvise_cmds , tcp - > u_arg [ 2 ] , " MADV_??? " ) ;
2000-04-11 02:22:31 +04:00
}
return 0 ;
}
2004-09-04 07:39:20 +04:00
static const struct xlat mlockall_flags [ ] = {
2000-04-11 02:22:31 +04:00
# ifdef MCL_CURRENT
{ MCL_CURRENT , " MCL_CURRENT " } ,
# endif
# ifdef MCL_FUTURE
{ MCL_FUTURE , " MCL_FUTURE " } ,
# endif
{ 0 , NULL }
} ;
int
sys_mlockall ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mlockall_flags , tcp - > u_arg [ 0 ] , " MCL_??? " ) ;
2000-04-11 02:22:31 +04:00
}
return 0 ;
}
1999-05-09 04:29:58 +04:00
# endif /* LINUX */
1999-02-19 03:21:36 +03:00
# ifdef MS_ASYNC
2004-09-04 07:39:20 +04:00
static const struct xlat mctl_sync [ ] = {
1999-02-19 03:21:36 +03:00
# ifdef MS_SYNC
{ MS_SYNC , " MS_SYNC " } ,
# endif
2001-10-16 22:12:27 +04:00
{ MS_ASYNC , " MS_ASYNC " } ,
{ MS_INVALIDATE , " MS_INVALIDATE " } ,
1999-02-19 03:21:36 +03:00
{ 0 , NULL } ,
} ;
int
sys_msync ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mctl_sync , tcp - > u_arg [ 2 ] , " MS_??? " ) ;
1999-02-19 03:21:36 +03:00
}
return 0 ;
}
# endif /* MS_ASYNC */
# ifdef MC_SYNC
2004-09-04 07:39:20 +04:00
static const struct xlat mctl_funcs [ ] = {
1999-02-19 03:21:36 +03: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 07:39:20 +04:00
static const struct xlat mctl_lockas [ ] = {
1999-02-19 03:21:36 +03:00
{ MCL_CURRENT , " MCL_CURRENT " } ,
{ MCL_FUTURE , " MCL_FUTURE " } ,
{ 0 , NULL } ,
} ;
int
sys_mctl ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mctl_funcs , function , " MC_??? " ) ;
1999-02-19 03:21:36 +03:00
/* arg */
arg = tcp - > u_arg [ 3 ] ;
tprintf ( " , " ) ;
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 23:02:36 +04:00
printflags ( mctl_sync , arg , " MS_??? " ) ;
1999-02-19 03:21:36 +03: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 23:02:36 +04:00
printflags ( mctl_lockas , arg , " MCL_??? " ) ;
1999-02-19 03:21:36 +03:00
break ;
default :
tprintf ( " %#x " , arg ) ;
break ;
}
}
return 0 ;
}
# endif /* MC_SYNC */
int
sys_mincore ( tcp )
struct tcb * tcp ;
{
2005-06-01 22:55:42 +04:00
unsigned long i , len ;
1999-02-19 03:21:36 +03:00
char * vec = NULL ;
if ( entering ( tcp ) ) {
tprintf ( " %#lx, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
} else {
len = tcp - > u_arg [ 1 ] ;
if ( syserror ( tcp ) | | tcp - > u_arg [ 2 ] = = 0 | |
2005-06-01 22:55:42 +04:00
( vec = malloc ( len ) ) = = NULL | |
1999-02-19 03:21:36 +03:00
umoven ( tcp , tcp - > u_arg [ 2 ] , len , vec ) < 0 )
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
else {
tprintf ( " [ " ) ;
for ( i = 0 ; i < len ; i + + ) {
if ( abbrev ( tcp ) & & i > = max_strlen ) {
tprintf ( " ... " ) ;
break ;
}
tprintf ( ( vec [ i ] & 1 ) ? " 1 " : " 0 " ) ;
}
tprintf ( " ] " ) ;
}
if ( vec )
free ( vec ) ;
}
return 0 ;
}
2007-09-12 05:26:29 +04:00
# if defined(ALPHA) || defined(FREEBSD) || defined(IA64) || defined(SUNOS4) || defined(SVR4) || defined(SPARC) || defined(SPARC64)
1999-02-19 03:21:36 +03:00
int
sys_getpagesize ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) )
return RVAL_HEX ;
return 0 ;
}
2006-12-13 19:59:44 +03:00
# endif /* ALPHA || FREEBSD || IA64 || SUNOS4 || SVR4 */
1999-02-19 03:21:36 +03:00
# if defined(LINUX) && defined(__i386__)
2002-12-22 06:34:36 +03:00
void
2009-01-23 19:10:22 +03:00
print_ldt_entry ( struct modify_ldt_ldt_s * ldt_entry )
2002-12-16 02:58:17 +03: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 19:10:22 +03:00
( long ) ldt_entry - > base_addr ,
2002-12-16 02:58:17 +03: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 03:21:36 +03:00
int
sys_modify_ldt ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
struct modify_ldt_ldt_s copy ;
tprintf ( " %ld " , tcp - > u_arg [ 0 ] ) ;
if ( tcp - > u_arg [ 1 ] = = 0
| | tcp - > u_arg [ 2 ] ! = sizeof ( struct modify_ldt_ldt_s )
| | 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 ) )
tprintf ( " ...} " ) ;
else {
2002-12-16 02:58:17 +03:00
print_ldt_entry ( & copy ) ;
1999-02-19 03:21:36 +03:00
}
}
tprintf ( " , %lu " , tcp - > u_arg [ 2 ] ) ;
}
return 0 ;
}
2002-12-16 02:58:17 +03:00
int
sys_set_thread_area ( tcp )
struct tcb * tcp ;
{
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
tprintf ( " {entry_number: " ) ;
}
} else {
if ( umove ( tcp , tcp - > u_arg [ 0 ] , & copy ) ! = - 1 ) {
tprintf ( " %d, " , copy . entry_number ) ;
if ( ! verbose ( tcp ) )
tprintf ( " ...} " ) ;
else {
print_ldt_entry ( & copy ) ;
}
} else {
tprintf ( " %lx " , tcp - > u_arg [ 0 ] ) ;
}
}
return 0 ;
2002-12-22 06:34:36 +03:00
2002-12-16 02:58:17 +03:00
}
int
sys_get_thread_area ( tcp )
struct tcb * tcp ;
{
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 ) )
tprintf ( " ...} " ) ;
else {
print_ldt_entry ( & copy ) ;
}
} else {
tprintf ( " %lx " , tcp - > u_arg [ 0 ] ) ;
}
}
return 0 ;
2002-12-22 06:34:36 +03:00
2002-12-16 02:58:17 +03:00
}
1999-02-19 03:21:36 +03:00
# endif /* LINUX && __i386__ */
2003-03-05 07:08:00 +03:00
# if defined(LINUX)
int
sys_remap_file_pages ( tcp )
struct tcb * tcp ;
{
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 23:02:36 +04:00
printflags ( mmap_prot , tcp - > u_arg [ 2 ] , " PROT_??? " ) ;
2003-03-05 07:08:00 +03: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 23:02:36 +04:00
printflags ( mmap_flags , tcp - > u_arg [ 4 ] , " MAP_??? " ) ;
2003-03-05 07:08:00 +03:00
# endif
}
return 0 ;
}
2004-10-07 22:53:12 +04: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 05:52:58 +04:00
# define MPOL_MF_MOVE (1<<1)
# define MPOL_MF_MOVE_ALL (1<<2)
2004-10-07 22:53:12 +04: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 05:52:58 +04:00
{ MPOL_MF_MOVE , " MPOL_MF_MOVE " } ,
{ MPOL_MF_MOVE_ALL , " MPOL_MF_MOVE_ALL " } ,
2004-10-07 22:53:12 +04: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 05:52:58 +04: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 22:53:12 +04:00
static void
get_nodes ( tcp , ptr , maxnodes , err )
struct tcb * tcp ;
unsigned long ptr ;
unsigned long maxnodes ;
int err ;
{
2005-06-01 23:22:06 +04: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 ;
}
tprintf ( " , { " ) ;
for ( cur = ptr ; cur < end ; cur + = sizeof ( long ) ) {
if ( cur > ptr )
tprintf ( " , " ) ;
if ( cur > = abbrev_end ) {
tprintf ( " ... " ) ;
break ;
}
if ( umoven ( tcp , cur , sizeof ( n ) , ( char * ) & n ) < 0 ) {
tprintf ( " ? " ) ;
failed = 1 ;
break ;
2004-10-07 22:53:12 +04:00
}
2005-06-01 23:22:06 +04:00
tprintf ( " %#0*lx " , ( int ) sizeof ( long ) * 2 + 2 , n ) ;
2004-10-07 22:53:12 +04:00
}
2005-06-01 23:22:06 +04:00
tprintf ( " } " ) ;
if ( failed )
tprintf ( " %#lx " , ptr ) ;
2004-10-07 22:53:12 +04:00
} else
2005-06-01 23:22:06 +04:00
tprintf ( " , %#lx " , ptr ) ;
2004-10-07 22:53:12 +04:00
tprintf ( " , %lu " , maxnodes ) ;
}
int
sys_mbind ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %lu, %lu, " , tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
printxval ( policies , tcp - > u_arg [ 2 ] , " MPOL_??? " ) ;
get_nodes ( tcp , tcp - > u_arg [ 3 ] , tcp - > u_arg [ 4 ] , 0 ) ;
tprintf ( " , " ) ;
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 23:02:36 +04:00
printflags ( mbindflags , tcp - > u_arg [ 5 ] , " MPOL_??? " ) ;
2004-10-07 22:53:12 +04:00
}
return 0 ;
}
int
sys_set_mempolicy ( tcp )
struct tcb * tcp ;
{
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
sys_get_mempolicy ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) ) {
int pol ;
if ( tcp - > u_arg [ 0 ] = = 0 )
tprintf ( " NULL " ) ;
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 23:02:36 +04:00
printflags ( mempolicyflags , tcp - > u_arg [ 4 ] , " MPOL_??? " ) ;
2004-10-07 22:53:12 +04:00
}
return 0 ;
}
2007-07-24 05:52:58 +04:00
int
sys_move_pages ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
unsigned long npages = tcp - > u_arg [ 1 ] ;
tprintf ( " %ld, %lu, " , tcp - > u_arg [ 0 ] , npages ) ;
if ( tcp - > u_arg [ 2 ] = = 0 )
tprintf ( " NULL, " ) ;
else {
int i ;
long puser = tcp - > u_arg [ 2 ] ;
tprintf ( " { " ) ;
for ( i = 0 ; i < npages ; + + i ) {
void * p ;
if ( i > 0 )
tprintf ( " , " ) ;
if ( umove ( tcp , puser , & p ) < 0 ) {
tprintf ( " ??? " ) ;
break ;
}
tprintf ( " %p " , p ) ;
puser + = sizeof ( void * ) ;
}
tprintf ( " }, " ) ;
}
if ( tcp - > u_arg [ 3 ] = = 0 )
tprintf ( " NULL, " ) ;
else {
int i ;
long nodeuser = tcp - > u_arg [ 3 ] ;
tprintf ( " { " ) ;
for ( i = 0 ; i < npages ; + + i ) {
int node ;
if ( i > 0 )
tprintf ( " , " ) ;
if ( umove ( tcp , nodeuser , & node ) < 0 ) {
tprintf ( " ??? " ) ;
break ;
}
tprintf ( " %#x " , node ) ;
nodeuser + = sizeof ( int ) ;
}
tprintf ( " }, " ) ;
}
}
if ( exiting ( tcp ) ) {
unsigned long npages = tcp - > u_arg [ 1 ] ;
if ( tcp - > u_arg [ 4 ] = = 0 )
tprintf ( " NULL, " ) ;
else {
int i ;
long statususer = tcp - > u_arg [ 4 ] ;
tprintf ( " { " ) ;
for ( i = 0 ; i < npages ; + + i ) {
int status ;
if ( i > 0 )
tprintf ( " , " ) ;
if ( umove ( tcp , statususer , & status ) < 0 ) {
tprintf ( " ??? " ) ;
break ;
}
tprintf ( " %#x " , status ) ;
statususer + = sizeof ( int ) ;
}
tprintf ( " }, " ) ;
}
printflags ( move_pages_flags , tcp - > u_arg [ 5 ] , " MPOL_??? " ) ;
}
return 0 ;
}
2003-03-05 07:08:00 +03:00
# endif
2008-08-25 07:09:16 +04:00
# if defined(LINUX) && defined(POWERPC)
int
sys_subpage_prot ( tcp )
struct tcb * tcp ;
{
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 ] ) {
tprintf ( " {} " ) ;
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 ;
tprintf ( " { " ) ;
for ( ; cur < end ; cur + = sizeof ( int ) ) {
if ( cur > tcp - > u_arg [ 2 ] )
tprintf ( " , " ) ;
if ( cur > = abbrev_end ) {
tprintf ( " ... " ) ;
break ;
}
if ( umove ( tcp , cur , & entry ) < 0 ) {
tprintf ( " ??? [%#lx] " , cur ) ;
break ;
}
else
tprintf ( " %#08x " , entry ) ;
}
tprintf ( " } " ) ;
}
return 0 ;
}
# endif