* 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>
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)
{
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
{ 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 */
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();
{ 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 */