Linux: implement decoding of preadv and pwritev syscalls
* io.c [LINUX && HAVE_SYS_UIO_H] (sys_preadv, sys_pwritev): New functions. * linux/syscall.h (sys_preadv, sys_pwritev): Declare them. * linux/*/syscallent.h: Use them. Signed-off-by: Damir Shayhutdinov <damir@altlinux.ru> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
This commit is contained in:
parent
1201426dd4
commit
3087dd6780
33
io.c
33
io.c
@ -304,6 +304,39 @@ sys_pwrite(struct tcb *tcp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if HAVE_SYS_UIO_H
|
||||
int
|
||||
sys_preadv(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printfd(tcp, tcp->u_arg[0]);
|
||||
tprintf(", ");
|
||||
} else {
|
||||
if (syserror(tcp)) {
|
||||
tprintf("%#lx, %lu", tcp->u_arg[1], tcp->u_arg[2]);
|
||||
return 0;
|
||||
}
|
||||
tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1]);
|
||||
tprintf(", %lu, ", tcp->u_arg[2]);
|
||||
printllval(tcp, "%llu", PREAD_OFFSET_ARG);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_pwritev(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printfd(tcp, tcp->u_arg[0]);
|
||||
tprintf(", ");
|
||||
tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1]);
|
||||
tprintf(", %lu, ", tcp->u_arg[2]);
|
||||
printllval(tcp, "%llu", PREAD_OFFSET_ARG);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif /* HAVE_SYS_UIO_H */
|
||||
|
||||
int
|
||||
sys_sendfile(struct tcb *tcp)
|
||||
{
|
||||
|
@ -518,8 +518,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 487 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 488 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 489 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 490 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 491 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 490 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 491 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 492 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 493 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 494 */
|
||||
|
@ -391,8 +391,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 358 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 359 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 360 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 361 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 362 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 361 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 362 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 363 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 364 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 365 */
|
||||
|
@ -394,8 +394,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 363 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 364 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 365 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 366 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 367 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 366 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 367 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 368 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 369 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 370 */
|
||||
|
@ -320,8 +320,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 312 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 313 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 314 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 315 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 316 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 315 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 316 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 317 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 318 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 319 */
|
||||
|
@ -363,8 +363,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 330 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 331 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 332 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 333 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 334 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 333 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 334 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 335 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 336 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 337 */
|
||||
|
@ -1114,8 +1114,8 @@
|
||||
{ 3, TD|TS, sys_signalfd, "signalfd" }, /* 1307 */
|
||||
{ 4, TD, sys_timerfd, "timerfd" }, /* 1308 */
|
||||
{ 1, TD, sys_eventfd, "eventfd" }, /* 1309 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 1319 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 1320 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 1319 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 1320 */
|
||||
{ 4, TS, printargs, "rt_tgsigqueueinfo"}, /* 1321 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 1322 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 1323 */
|
||||
|
@ -357,8 +357,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 326 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 327 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 328 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 329 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 330 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 329 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 330 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 331 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 332 */
|
||||
{ 0, 0, sys_get_thread_area, "get_thread_area"}, /* 333 */
|
||||
|
@ -392,8 +392,8 @@
|
||||
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 360 */
|
||||
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 361 */
|
||||
{ 4, TN, sys_accept4, "accept4" }, /* 362 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 363 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 364 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 363 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 364 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 365 */
|
||||
{ 5, TN, printargs, "perf_event_open" }, /* 366 */
|
||||
{ 5, TN, printargs, "recvmmsg" }, /* 367 */
|
||||
|
@ -4332,8 +4332,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 4327 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 4328 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 4329 */
|
||||
{ 6, TD, printargs, "preadv" }, /* 4330 */
|
||||
{ 6, TD, printargs, "pwritev" }, /* 4331 */
|
||||
{ 6, TD, sys_preadv, "preadv" }, /* 4330 */
|
||||
{ 6, TD, sys_pwritev, "pwritev" }, /* 4331 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 4332 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 4333 */
|
||||
{ 4, TN, sys_accept4, "accept4" }, /* 4334 */
|
||||
@ -5637,8 +5637,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 5286 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 5287 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 5288 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 5289 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 5290 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 5289 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 5290 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 5291 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 5292 */
|
||||
{ 4, TN, sys_accept4, "accept4" }, /* 5293 */
|
||||
@ -6947,8 +6947,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 6290 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 6291 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 6292 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 6293 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 6294 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 6293 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 6294 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 6295 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 6296 */
|
||||
{ 4, TN, sys_accept4, "accept4" }, /* 6297 */
|
||||
|
@ -348,8 +348,8 @@
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 317 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 318 */
|
||||
{ 5, TD, printargs, "perf_event_open" }, /* 319 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 320 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 321 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 320 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 321 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 322 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 323 */
|
||||
{ 5, TD|TF, printargs, "fanotify_mark" }, /* 324 */
|
||||
|
@ -356,8 +356,8 @@
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 325 */
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 326 */
|
||||
{ 1, TD, sys_epoll_create1, "epoll_create1" }, /* 327 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 328 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 329 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 328 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 329 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 330 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 331 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 332 */
|
||||
|
@ -355,8 +355,8 @@
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 325 */
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 326 */
|
||||
{ 1, TD, sys_epoll_create1, "epoll_create1" }, /* 327 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 328 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 329 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 328 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 329 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 330 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 331 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 332 */
|
||||
|
@ -365,8 +365,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 330 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 331 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 332 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 333 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 334 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 333 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 334 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 335 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 336 */
|
||||
{ 2, TD, printargs, "fanotify_init" }, /* 337 */
|
||||
|
@ -389,8 +389,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 358 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 359 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 360 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 361 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 362 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 361 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 362 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 363 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 364 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 365 */
|
||||
|
@ -322,8 +322,8 @@
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 321 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 322 */
|
||||
{ 4, TN, sys_accept4, "accept4" }, /* 323 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 324 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 325 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 324 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 325 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 326 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 327 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 328 */
|
||||
|
@ -80,6 +80,7 @@ int sys_sched_get_priority_max(), sys_sched_get_priority_min();
|
||||
int sys_sched_rr_get_interval(), sys_nanosleep(), sys_mremap();
|
||||
int sys_sendmsg(), sys_recvmsg(), sys_setresuid(), sys_setresgid();
|
||||
int sys_getresuid(), sys_getresgid(), sys_pread(), sys_pwrite(), sys_getcwd();
|
||||
int sys_preadv(), sys_pwritev();
|
||||
int sys_sigaltstack(), sys_rt_sigprocmask(), sys_rt_sigaction();
|
||||
int sys_rt_sigpending(), sys_rt_sigsuspend(), sys_rt_sigqueueinfo();
|
||||
int sys_rt_sigtimedwait(), sys_prctl(), sys_poll(), sys_vfork();
|
||||
|
@ -293,8 +293,8 @@
|
||||
{ 3, TD, sys_dup3, "dup3" }, /* 292 */
|
||||
{ 2, TD, sys_pipe2, "pipe2" }, /* 293 */
|
||||
{ 1, TD, sys_inotify_init1, "inotify_init1" }, /* 294 */
|
||||
{ 5, TD, printargs, "preadv" }, /* 295 */
|
||||
{ 5, TD, printargs, "pwritev" }, /* 296 */
|
||||
{ 5, TD, sys_preadv, "preadv" }, /* 295 */
|
||||
{ 5, TD, sys_pwritev, "pwritev" }, /* 296 */
|
||||
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo"}, /* 297 */
|
||||
{ 5, TD, printargs, "perf_event_open"}, /* 298 */
|
||||
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 299 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user