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 >
* 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"
# ifdef LINUX
# include <linux/version.h>
2000-10-13 16:47:12 +04:00
# include <sys/timex.h>
2004-10-07 02:27:43 +04:00
# include <linux/ioctl.h>
# include <linux/rtc.h>
1999-02-19 03:21:36 +03:00
# endif /* LINUX */
2006-12-13 20:10:11 +03:00
struct timeval32
1999-02-19 03:21:36 +03:00
{
2006-12-13 20:10:11 +03:00
u_int32_t tv_sec , tv_usec ;
} ;
1999-02-19 03:21:36 +03:00
2006-12-13 20:10:11 +03:00
void
printtv_bitness ( struct tcb * tcp , long addr , enum bitness_t bitness )
{
1999-02-19 03:21:36 +03:00
if ( addr = = 0 )
tprintf ( " NULL " ) ;
else if ( ! verbose ( tcp ) )
tprintf ( " %#lx " , addr ) ;
else
2006-12-13 20:10:11 +03:00
{
int rc ;
1999-02-19 03:21:36 +03:00
2006-12-13 20:10:11 +03:00
if ( bitness = = BITNESS_32
# if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
| | personality_wordsize [ current_personality ] = = 4
# endif
)
{
struct timeval32 tv ;
if ( ( rc = umove ( tcp , addr , & tv ) ) > = 0 )
tprintf ( " {%u, %u} " ,
tv . tv_sec , tv . tv_usec ) ;
} else
{
struct timeval tv ;
if ( ( rc = umove ( tcp , addr , & tv ) ) > = 0 )
tprintf ( " {%lu, %lu} " ,
( unsigned long ) tv . tv_sec ,
( unsigned long ) tv . tv_usec ) ;
}
if ( rc < 0 )
tprintf ( " {...} " ) ;
}
}
1999-11-18 20:26:45 +03:00
1999-11-18 20:09:47 +03:00
void
2006-12-13 20:10:11 +03:00
sprinttv ( struct tcb * tcp , long addr , enum bitness_t bitness , char * buf )
1999-11-18 20:09:47 +03:00
{
2006-12-13 20:10:11 +03:00
if ( addr = = 0 )
strcpy ( buf , " NULL " ) ;
else if ( ! verbose ( tcp ) )
sprintf ( buf , " %#lx " , addr ) ;
else
{
int rc ;
if ( bitness = = BITNESS_32
# if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
| | personality_wordsize [ current_personality ] = = 4
1999-11-18 20:09:47 +03:00
# endif
2006-12-13 20:10:11 +03:00
)
{
struct timeval32 tv ;
if ( ( rc = umove ( tcp , addr , & tv ) ) > = 0 )
sprintf ( buf , " {%u, %u} " ,
tv . tv_sec , tv . tv_usec ) ;
} else
{
struct timeval tv ;
if ( ( rc = umove ( tcp , addr , & tv ) ) > = 0 )
sprintf ( buf , " {%lu, %lu} " ,
( unsigned long ) tv . tv_sec ,
( unsigned long ) tv . tv_usec ) ;
}
1999-11-18 20:09:47 +03:00
2006-12-13 20:10:11 +03:00
if ( rc < 0 )
strcpy ( buf , " {...} " ) ;
}
}
1999-11-18 20:09:47 +03:00
1999-02-19 03:21:36 +03:00
int
sys_time ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) ) {
# ifndef SVR4
printnum ( tcp , tcp - > u_arg [ 0 ] , " %ld " ) ;
# endif /* SVR4 */
}
return 0 ;
}
int
sys_stime ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) ) {
printnum ( tcp , tcp - > u_arg [ 0 ] , " %ld " ) ;
}
return 0 ;
}
int
sys_gettimeofday ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) ) {
if ( syserror ( tcp ) ) {
tprintf ( " %#lx, %#lx " ,
tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
return 0 ;
}
printtv ( tcp , tcp - > u_arg [ 0 ] ) ;
# ifndef SVR4
tprintf ( " , " ) ;
printtv ( tcp , tcp - > u_arg [ 1 ] ) ;
# endif /* !SVR4 */
}
return 0 ;
}
1999-11-18 20:09:47 +03:00
# ifdef ALPHA
int
sys_osf_gettimeofday ( tcp )
struct tcb * tcp ;
{
if ( exiting ( tcp ) ) {
if ( syserror ( tcp ) ) {
tprintf ( " %#lx, %#lx " ,
tcp - > u_arg [ 0 ] , tcp - > u_arg [ 1 ] ) ;
return 0 ;
}
2006-12-13 20:10:11 +03:00
printtv_bitness ( tcp , tcp - > u_arg [ 0 ] , BITNESS_32 ) ;
1999-11-18 20:09:47 +03:00
# ifndef SVR4
tprintf ( " , " ) ;
2006-12-13 20:10:11 +03:00
printtv_bitness ( tcp , tcp - > u_arg [ 1 ] , BITNESS_32 ) ;
1999-11-18 20:09:47 +03:00
# endif /* !SVR4 */
}
return 0 ;
}
# endif
1999-02-19 03:21:36 +03:00
int
sys_settimeofday ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printtv ( tcp , tcp - > u_arg [ 0 ] ) ;
# ifndef SVR4
tprintf ( " , " ) ;
printtv ( tcp , tcp - > u_arg [ 1 ] ) ;
# endif /* !SVR4 */
}
return 0 ;
}
1999-11-18 20:09:47 +03:00
# ifdef ALPHA
int
sys_osf_settimeofday ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
2006-12-13 20:10:11 +03:00
printtv_bitness ( tcp , tcp - > u_arg [ 0 ] , BITNESS_32 ) ;
1999-11-18 20:09:47 +03:00
# ifndef SVR4
tprintf ( " , " ) ;
2006-12-13 20:10:11 +03:00
printtv_bitness ( tcp , tcp - > u_arg [ 1 ] , BITNESS_32 ) ;
1999-11-18 20:09:47 +03:00
# endif /* !SVR4 */
}
return 0 ;
}
# endif
1999-02-19 03:21:36 +03:00
int
sys_adjtime ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printtv ( tcp , tcp - > u_arg [ 0 ] ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 1 ] ) ;
else
printtv ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
2004-09-04 07:39:20 +04:00
static const struct xlat which [ ] = {
1999-02-19 03:21:36 +03:00
{ ITIMER_REAL , " ITIMER_REAL " } ,
{ ITIMER_VIRTUAL , " ITIMER_VIRTUAL " } ,
{ ITIMER_PROF , " ITIMER_PROF " } ,
{ 0 , NULL } ,
} ;
static void
printitv ( tcp , addr )
struct tcb * tcp ;
long addr ;
{
struct itimerval itv ;
if ( addr = = 0 )
tprintf ( " NULL " ) ;
else if ( ! verbose ( tcp ) )
tprintf ( " %#lx " , addr ) ;
else if ( umove ( tcp , addr , & itv ) < 0 )
tprintf ( " {...} " ) ;
else {
tprintf ( " {it_interval={%lu, %lu}, it_value={%lu, %lu}} " ,
( long ) itv . it_interval . tv_sec , ( long ) itv . it_interval . tv_usec ,
( long ) itv . it_value . tv_sec , ( long ) itv . it_value . tv_usec ) ;
}
}
1999-11-18 20:09:47 +03:00
# ifdef ALPHA
static void
printitv32 ( tcp , addr )
struct tcb * tcp ;
long addr ;
{
struct itimerval32
{
struct timeval32 it_interval ;
struct timeval32 it_value ;
} itv ;
if ( addr = = 0 )
tprintf ( " NULL " ) ;
else if ( ! verbose ( tcp ) )
tprintf ( " %#lx " , addr ) ;
else if ( umove ( tcp , addr , & itv ) < 0 )
tprintf ( " {...} " ) ;
else {
tprintf ( " {it_interval={%u, %u}, it_value={%u, %u}} " ,
itv . it_interval . tv_sec , itv . it_interval . tv_usec ,
itv . it_value . tv_sec , itv . it_value . tv_usec ) ;
}
}
# endif
1999-02-19 03:21:36 +03:00
int
sys_getitimer ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printxval ( which , tcp - > u_arg [ 0 ] , " ITIMER_??? " ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 1 ] ) ;
else
printitv ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
1999-11-18 20:09:47 +03:00
# ifdef ALPHA
int
sys_osf_getitimer ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printxval ( which , tcp - > u_arg [ 0 ] , " ITIMER_??? " ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 1 ] ) ;
else
printitv32 ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
# endif
1999-02-19 03:21:36 +03:00
int
sys_setitimer ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printxval ( which , tcp - > u_arg [ 0 ] , " ITIMER_??? " ) ;
tprintf ( " , " ) ;
printitv ( tcp , tcp - > u_arg [ 1 ] ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
else
printitv ( tcp , tcp - > u_arg [ 2 ] ) ;
}
return 0 ;
}
1999-11-18 20:09:47 +03:00
# ifdef ALPHA
int
sys_osf_setitimer ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
printxval ( which , tcp - > u_arg [ 0 ] , " ITIMER_??? " ) ;
tprintf ( " , " ) ;
printitv32 ( tcp , tcp - > u_arg [ 1 ] ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
else
printitv32 ( tcp , tcp - > u_arg [ 2 ] ) ;
}
return 0 ;
}
# endif
1999-02-19 03:21:36 +03:00
# ifdef LINUX
int
sys_adjtimex ( tcp )
struct tcb * tcp ;
{
struct timex txc ;
if ( exiting ( tcp ) ) {
if ( tcp - > u_arg [ 0 ] = = 0 )
tprintf ( " NULL " ) ;
else if ( syserror ( tcp ) | | ! verbose ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 0 ] ) ;
else if ( umove ( tcp , tcp - > u_arg [ 0 ] , & txc ) < 0 )
tprintf ( " {...} " ) ;
else {
# if LINUX_VERSION_CODE < 66332
tprintf ( " {mode=%d, offset=%ld, frequency=%ld, " ,
txc . mode , txc . offset , txc . frequency ) ;
tprintf ( " maxerror=%ld, esterror=%lu, status=%u, " ,
txc . maxerror , txc . esterror , txc . status ) ;
tprintf ( " time_constant=%ld, precision=%lu, " ,
txc . time_constant , txc . precision ) ;
tprintf ( " tolerance=%ld, time={%lu, %lu}} " ,
txc . tolerance , ( long ) txc . time . tv_sec ,
( long ) txc . time . tv_usec ) ;
# else
tprintf ( " {modes=%d, offset=%ld, freq=%ld, " ,
txc . modes , txc . offset , txc . freq ) ;
tprintf ( " maxerror=%ld, esterror=%lu, status=%u, " ,
txc . maxerror , txc . esterror , txc . status ) ;
tprintf ( " constant=%ld, precision=%lu, " ,
txc . constant , txc . precision ) ;
tprintf ( " tolerance=%ld, time={%lu, %lu}} " ,
txc . tolerance , ( long ) txc . time . tv_sec ,
( long ) txc . time . tv_usec ) ;
/* there's a bunch of other stuff, but it's not
* worth the time or the trouble to include */
# endif
}
}
return 0 ;
}
2003-03-31 03:52:28 +04:00
2004-09-04 07:39:20 +04:00
static const struct xlat clockflags [ ] = {
2003-03-31 03:52:28 +04:00
{ TIMER_ABSTIME , " TIMER_ABSTIME " } ,
{ 0 , NULL }
} ;
2004-09-04 07:39:20 +04:00
static const struct xlat clocknames [ ] = {
2004-08-31 12:26:39 +04:00
# ifdef CLOCK_REALTIME
2004-08-31 10:52:45 +04:00
{ CLOCK_REALTIME , " CLOCK_REALTIME " } ,
2004-08-31 12:26:39 +04:00
# endif
# ifdef CLOCK_MONOTONIC
2004-08-31 10:52:45 +04:00
{ CLOCK_MONOTONIC , " CLOCK_MONOTONIC " } ,
2004-08-31 12:26:39 +04:00
# endif
2004-08-31 10:52:45 +04:00
{ 0 , NULL }
} ;
2003-03-31 03:52:28 +04:00
int
sys_clock_settime ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
2004-08-31 10:52:45 +04:00
printxval ( clocknames , tcp - > u_arg [ 0 ] , " CLOCK_??? " ) ;
tprintf ( " , " ) ;
2003-03-31 03:52:28 +04:00
printtv ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
int
sys_clock_gettime ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
2004-08-31 10:52:45 +04:00
printxval ( clocknames , tcp - > u_arg [ 0 ] , " CLOCK_??? " ) ;
tprintf ( " , " ) ;
2003-03-31 03:52:28 +04:00
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 1 ] ) ;
else
printtv ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
int
sys_clock_nanosleep ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
2004-08-31 10:52:45 +04:00
printxval ( clocknames , tcp - > u_arg [ 0 ] , " CLOCK_??? " ) ;
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 ( clockflags , tcp - > u_arg [ 1 ] , " TIMER_??? " ) ;
2003-03-31 03:52:28 +04:00
tprintf ( " , " ) ;
printtv ( tcp , tcp - > u_arg [ 2 ] ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 3 ] ) ;
else
printtv ( tcp , tcp - > u_arg [ 3 ] ) ;
}
return 0 ;
}
# ifndef SIGEV_THREAD_ID
# define SIGEV_THREAD_ID 4
# endif
2004-09-04 07:39:20 +04:00
static const struct xlat sigev_value [ ] = {
2003-03-31 03:52:28 +04:00
{ SIGEV_SIGNAL + 1 , " SIGEV_SIGNAL " } ,
{ SIGEV_NONE + 1 , " SIGEV_NONE " } ,
{ SIGEV_THREAD + 1 , " SIGEV_THREAD " } ,
{ SIGEV_THREAD_ID + 1 , " SIGEV_THREAD_ID " } ,
{ 0 , NULL }
} ;
void
printsigevent ( tcp , arg )
struct tcb * tcp ;
long arg ;
{
struct sigevent sev ;
if ( umove ( tcp , arg , & sev ) < 0 )
tprintf ( " {...} " ) ;
else {
2004-09-11 12:12:45 +04:00
tprintf ( " {%p, " , sev . sigev_value . sival_ptr ) ;
if ( sev . sigev_notify = = SIGEV_SIGNAL )
tprintf ( " %s, " , signame ( sev . sigev_signo ) ) ;
else
tprintf ( " %u, " , sev . sigev_signo ) ;
2003-03-31 03:52:28 +04:00
printxval ( sigev_value , sev . sigev_notify + 1 , " SIGEV_??? " ) ;
tprintf ( " , " ) ;
if ( sev . sigev_notify = = SIGEV_THREAD_ID )
/* _pad[0] is the _tid field which might not be
present in the userlevel definition of the
struct . */
tprintf ( " {%d} " , sev . _sigev_un . _pad [ 0 ] ) ;
2004-04-17 01:48:44 +04:00
else if ( sev . sigev_notify = = SIGEV_THREAD )
tprintf ( " {%p, %p} " , sev . sigev_notify_function ,
sev . sigev_notify_attributes ) ;
2003-03-31 03:52:28 +04:00
else
tprintf ( " {...} " ) ;
tprintf ( " } " ) ;
}
}
int
sys_timer_create ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
2004-09-11 12:12:45 +04:00
printxval ( clocknames , tcp - > u_arg [ 0 ] , " CLOCK_??? " ) ;
tprintf ( " , " ) ;
2003-03-31 03:52:28 +04:00
printsigevent ( tcp , tcp - > u_arg [ 1 ] ) ;
tprintf ( " , " ) ;
} else {
2006-12-13 20:03:02 +03:00
void * p ;
if ( syserror ( tcp ) | | umove ( tcp , tcp - > u_arg [ 2 ] , & p ) < 0 )
2003-03-31 03:52:28 +04:00
tprintf ( " %#lx " , tcp - > u_arg [ 2 ] ) ;
2006-12-13 20:03:02 +03:00
else
2003-03-31 03:52:28 +04:00
tprintf ( " {%p} " , p ) ;
}
return 0 ;
}
int
sys_timer_settime ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, " , tcp - > u_arg [ 0 ] ) ;
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 ( clockflags , tcp - > u_arg [ 1 ] , " TIMER_??? " ) ;
2003-03-31 03:52:28 +04:00
tprintf ( " , " ) ;
printitv ( tcp , tcp - > u_arg [ 2 ] ) ;
tprintf ( " , " ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 3 ] ) ;
else
printitv ( tcp , tcp - > u_arg [ 3 ] ) ;
}
return 0 ;
}
int
sys_timer_gettime ( tcp )
struct tcb * tcp ;
{
if ( entering ( tcp ) ) {
tprintf ( " %#lx, " , tcp - > u_arg [ 0 ] ) ;
} else {
if ( syserror ( tcp ) )
tprintf ( " %#lx " , tcp - > u_arg [ 1 ] ) ;
else
printitv ( tcp , tcp - > u_arg [ 1 ] ) ;
}
return 0 ;
}
2004-10-07 02:27:43 +04:00
static void
print_rtc ( tcp , rt )
struct tcb * tcp ;
const struct rtc_time * rt ;
{
tprintf ( " {tm_sec=%d, tm_min=%d, tm_hour=%d, "
" tm_mday=%d, tm_mon=%d, tm_year=%d, " ,
rt - > tm_sec , rt - > tm_min , rt - > tm_hour ,
rt - > tm_mday , rt - > tm_mon , rt - > tm_year ) ;
if ( ! abbrev ( tcp ) )
tprintf ( " tm_wday=%d, tm_yday=%d, tm_isdst=%d} " ,
rt - > tm_wday , rt - > tm_yday , rt - > tm_isdst ) ;
else
tprintf ( " ...} " ) ;
}
int
rtc_ioctl ( tcp , code , arg )
struct tcb * tcp ;
long code ;
long arg ;
{
switch ( code ) {
case RTC_ALM_SET :
case RTC_SET_TIME :
if ( entering ( tcp ) ) {
struct rtc_time rt ;
if ( umove ( tcp , arg , & rt ) < 0 )
tprintf ( " , %#lx " , arg ) ;
else {
tprintf ( " , " ) ;
print_rtc ( tcp , & rt ) ;
}
}
break ;
case RTC_ALM_READ :
case RTC_RD_TIME :
if ( exiting ( tcp ) ) {
struct rtc_time rt ;
if ( syserror ( tcp ) | | umove ( tcp , arg , & rt ) < 0 )
tprintf ( " , %#lx " , arg ) ;
else {
tprintf ( " , " ) ;
print_rtc ( tcp , & rt ) ;
}
}
break ;
case RTC_IRQP_SET :
case RTC_EPOCH_SET :
if ( entering ( tcp ) )
tprintf ( " , %lu " , arg ) ;
break ;
case RTC_IRQP_READ :
case RTC_EPOCH_READ :
if ( exiting ( tcp ) )
tprintf ( " , %lu " , arg ) ;
break ;
case RTC_WKALM_SET :
if ( entering ( tcp ) ) {
struct rtc_wkalrm wk ;
if ( umove ( tcp , arg , & wk ) < 0 )
tprintf ( " , %#lx " , arg ) ;
else {
tprintf ( " , {enabled=%d, pending=%d, " ,
wk . enabled , wk . pending ) ;
print_rtc ( tcp , & wk . time ) ;
tprintf ( " } " ) ;
}
}
break ;
case RTC_WKALM_RD :
if ( exiting ( tcp ) ) {
struct rtc_wkalrm wk ;
if ( syserror ( tcp ) | | umove ( tcp , arg , & wk ) < 0 )
tprintf ( " , %#lx " , arg ) ;
else {
tprintf ( " , {enabled=%d, pending=%d, " ,
wk . enabled , wk . pending ) ;
print_rtc ( tcp , & wk . time ) ;
tprintf ( " } " ) ;
}
}
break ;
default :
if ( entering ( tcp ) )
tprintf ( " , %#lx " , arg ) ;
break ;
}
return 1 ;
}
1999-02-19 03:21:36 +03:00
# endif /* LINUX */