2007-09-22 Dmitry V. Levin <ldv@altlinux.org>
* time.c (print_timespec, sprint_timespec): New functions. * defs.h (print_timespec, sprint_timespec): Declare them. * desc.c (sys_io_getevents): Use print_timespec. * stream.c (sys_ppoll): Likewise. (decode_poll): Use sprint_timespec.
This commit is contained in:
parent
f17106ee78
commit
6bc09daaf6
2
defs.h
2
defs.h
@ -457,6 +457,8 @@ extern void printpath P((struct tcb *, long));
|
|||||||
extern void printpathn P((struct tcb *, long, int));
|
extern void printpathn P((struct tcb *, long, int));
|
||||||
extern void printtv_bitness P((struct tcb *, long, enum bitness_t, int));
|
extern void printtv_bitness P((struct tcb *, long, enum bitness_t, int));
|
||||||
extern void sprinttv P((struct tcb *, long, enum bitness_t, char *));
|
extern void sprinttv P((struct tcb *, long, enum bitness_t, char *));
|
||||||
|
extern void print_timespec P((struct tcb *, long));
|
||||||
|
extern void sprint_timespec P((char *, struct tcb *, long));
|
||||||
#ifdef HAVE_SIGINFO_T
|
#ifdef HAVE_SIGINFO_T
|
||||||
extern void printsiginfo P((siginfo_t *, int));
|
extern void printsiginfo P((siginfo_t *, int));
|
||||||
#endif
|
#endif
|
||||||
|
13
desc.c
13
desc.c
@ -816,8 +816,7 @@ struct tcb *tcp;
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sys_io_getevents(tcp)
|
sys_io_getevents(struct tcb * tcp)
|
||||||
struct tcb *tcp;
|
|
||||||
{
|
{
|
||||||
if (entering(tcp)) {
|
if (entering(tcp)) {
|
||||||
tprintf("%ld, %ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1],
|
tprintf("%ld, %ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1],
|
||||||
@ -851,15 +850,7 @@ struct tcb *tcp;
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tcp->u_arg[4] == 0)
|
print_timespec(tcp, tcp->u_arg[4]);
|
||||||
tprintf("NULL");
|
|
||||||
else {
|
|
||||||
struct timespec to;
|
|
||||||
if (umove(tcp, tcp->u_arg[4], &to) == 0)
|
|
||||||
tprintf("{%lu, %lu}", to.tv_sec, to.tv_nsec);
|
|
||||||
else
|
|
||||||
tprintf("{...}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
14
stream.c
14
stream.c
@ -417,15 +417,10 @@ decode_poll(struct tcb *tcp, long pts)
|
|||||||
strcat(outstr, "]");
|
strcat(outstr, "]");
|
||||||
|
|
||||||
if (pts) {
|
if (pts) {
|
||||||
struct timespec ts;
|
|
||||||
char str[128];
|
char str[128];
|
||||||
|
|
||||||
sprintf(str, "%sleft ", cumlen ? ", " : "");
|
sprintf(str, "%sleft ", cumlen ? ", " : "");
|
||||||
if (umove(tcp, pts, &ts) == 0)
|
sprint_timespec(str + strlen(str), tcp, pts);
|
||||||
sprintf(str + strlen(str), "{%lu, %lu}",
|
|
||||||
ts.tv_sec, ts.tv_nsec);
|
|
||||||
else
|
|
||||||
strcat(str, "{...}");
|
|
||||||
if ((cumlen += strlen(str)) < sizeof(outstr))
|
if ((cumlen += strlen(str)) < sizeof(outstr))
|
||||||
strcat(outstr, str);
|
strcat(outstr, str);
|
||||||
}
|
}
|
||||||
@ -459,11 +454,8 @@ sys_ppoll(struct tcb *tcp)
|
|||||||
{
|
{
|
||||||
int rc = decode_poll(tcp, tcp->u_arg[2]);
|
int rc = decode_poll(tcp, tcp->u_arg[2]);
|
||||||
if (entering(tcp)) {
|
if (entering(tcp)) {
|
||||||
struct timespec ts;
|
print_timespec(tcp, tcp->u_arg[2]);
|
||||||
if (umove(tcp, tcp->u_arg[2], &ts) == 0)
|
tprintf(", ");
|
||||||
tprintf("{%lu, %lu}, ", ts.tv_sec, ts.tv_nsec);
|
|
||||||
else
|
|
||||||
tprintf("{...}, ");
|
|
||||||
print_sigset(tcp, tcp->u_arg[3], 0);
|
print_sigset(tcp, tcp->u_arg[3], 0);
|
||||||
tprintf(", %lu", tcp->u_arg[4]);
|
tprintf(", %lu", tcp->u_arg[4]);
|
||||||
}
|
}
|
||||||
|
70
time.c
70
time.c
@ -150,6 +150,76 @@ sprinttv(struct tcb *tcp, long addr, enum bitness_t bitness, char *buf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void print_timespec (struct tcb *tcp, long addr)
|
||||||
|
{
|
||||||
|
if (addr == 0)
|
||||||
|
tprintf("NULL");
|
||||||
|
else if (!verbose(tcp))
|
||||||
|
tprintf("%#lx", addr);
|
||||||
|
else {
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
|
||||||
|
if (personality_wordsize[current_personality] == 4)
|
||||||
|
{
|
||||||
|
struct timeval32 tv;
|
||||||
|
|
||||||
|
if ((rc = umove(tcp, addr, &tv)) >= 0)
|
||||||
|
tprintf("{%u, %u}",
|
||||||
|
tv.tv_sec, tv.tv_usec);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
struct timespec ts;
|
||||||
|
|
||||||
|
if ((rc = umove(tcp, addr, &ts)) >= 0)
|
||||||
|
tprintf("{%lu, %lu}",
|
||||||
|
(unsigned long) ts.tv_sec,
|
||||||
|
(unsigned long) ts.tv_nsec);
|
||||||
|
#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (rc < 0)
|
||||||
|
tprintf("{...}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sprint_timespec (char *buf, struct tcb *tcp, long addr)
|
||||||
|
{
|
||||||
|
if (addr == 0)
|
||||||
|
strcpy(buf, "NULL");
|
||||||
|
else if (!verbose(tcp))
|
||||||
|
sprintf(buf, "%#lx", addr);
|
||||||
|
else {
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
|
||||||
|
if (personality_wordsize[current_personality] == 4)
|
||||||
|
{
|
||||||
|
struct timeval32 tv;
|
||||||
|
|
||||||
|
if ((rc = umove(tcp, addr, &tv)) >= 0)
|
||||||
|
sprintf(buf, "{%u, %u}",
|
||||||
|
tv.tv_sec, tv.tv_usec);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
struct timespec ts;
|
||||||
|
|
||||||
|
if ((rc = umove(tcp, addr, &ts)) >= 0)
|
||||||
|
sprintf(buf, "{%lu, %lu}",
|
||||||
|
(unsigned long) ts.tv_sec,
|
||||||
|
(unsigned long) ts.tv_nsec);
|
||||||
|
#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (rc < 0)
|
||||||
|
strcpy(buf, "{...}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sys_time(tcp)
|
sys_time(tcp)
|
||||||
struct tcb *tcp;
|
struct tcb *tcp;
|
||||||
|
Loading…
Reference in New Issue
Block a user