Decode recvmmsg syscall

* net.c (do_msghr): New function to print struct msghdr.
(printmsghdr): Use it.
(printmmsghdr, sys_recvmmsg): New.
* linux/syscall.h: Declare sys_recvmmsg.
(SYS_sub_recvmmsg): Define.
(SYS_socket_nsubcalls): Bump.
* linux/sparc/syscall.h: Likewise.
* linux/arm/syscallent.h: Add sys_recvmmsg.
* linux/bfin/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Adjust.
This commit is contained in:
Andreas Schwab 2010-02-12 21:39:12 +01:00 committed by Dmitry V. Levin
parent a7835e631a
commit 0873f29af4
14 changed files with 219 additions and 163 deletions

View File

@ -454,33 +454,34 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */
#endif

View File

@ -398,3 +398,4 @@
{ 5, TD, printargs, "pwritev" }, /* 367 */
{ 4, TP|TS, printargs, "rt_tgsigqueueinfo" }, /* 368 */
{ 5, 0, printargs, "perf_counter_open" }, /* 369 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 370 */

View File

@ -453,32 +453,33 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */

View File

@ -242,14 +242,13 @@
#include "../dummy.h"
/* You must be careful to check ../syscallent.h so that this table
/* You must be careful to check ../i386/syscallent.h so that this table
starts where that one leaves off.
*/
#if SYS_ipc_subcall + SYS_ipc_nsubcalls != 444
#if SYS_ipc_subcall + SYS_ipc_nsubcalls != 445
# error fix me
#endif
{ 8, 0, printargs, "SYS_444" }, /* 444 */
{ 8, 0, printargs, "SYS_445" }, /* 445 */
{ 8, 0, printargs, "SYS_446" }, /* 446 */
{ 8, 0, printargs, "SYS_447" }, /* 447 */

View File

@ -452,32 +452,33 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */

View File

@ -452,37 +452,38 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, printargs, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, printargs, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 5, 0, printargs, "SYS_343" }, /* 444 */
{ 5, 0, printargs, "SYS_344" }, /* 445 */
{ 5, 0, printargs, "SYS_345" }, /* 446 */
{ 5, 0, printargs, "SYS_346" }, /* 447 */
{ 5, 0, printargs, "SYS_347" }, /* 448 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */
{ 5, 0, printargs, "SYS_343" }, /* 445 */
{ 5, 0, printargs, "SYS_344" }, /* 446 */
{ 5, 0, printargs, "SYS_345" }, /* 447 */
{ 5, 0, printargs, "SYS_346" }, /* 448 */
{ 5, 0, printargs, "SYS_347" }, /* 449 */

View File

@ -452,32 +452,33 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */

View File

@ -450,32 +450,33 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */

View File

@ -455,33 +455,34 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, TI, sys_semop, "semop" }, /* 420 */
{ 4, TI, sys_semget, "semget" }, /* 421 */
{ 4, TI, sys_semctl, "semctl" }, /* 422 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 423 */
{ 4, 0, printargs, "ipc_subcall" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */
{ 4, TI, sys_semop, "semop" }, /* 421 */
{ 4, TI, sys_semget, "semget" }, /* 422 */
{ 4, TI, sys_semctl, "semctl" }, /* 423 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 424 */
{ 4, 0, printargs, "ipc_subcall" }, /* 425 */
{ 4, 0, printargs, "ipc_subcall" }, /* 426 */
{ 4, 0, printargs, "ipc_subcall" }, /* 427 */
{ 4, 0, printargs, "ipc_subcall" }, /* 428 */
{ 4, 0, printargs, "ipc_subcall" }, /* 429 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 430 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 431 */
{ 4, TI, sys_msgget, "msgget" }, /* 432 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 433 */
{ 4, 0, printargs, "ipc_subcall" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 430 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 431 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 432 */
{ 4, TI, sys_msgget, "msgget" }, /* 433 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 434 */
{ 4, 0, printargs, "ipc_subcall" }, /* 435 */
{ 4, 0, printargs, "ipc_subcall" }, /* 436 */
{ 4, 0, printargs, "ipc_subcall" }, /* 437 */
{ 4, 0, printargs, "ipc_subcall" }, /* 438 */
{ 4, 0, printargs, "ipc_subcall" }, /* 439 */
{ 4, TI, sys_shmat, "shmat" }, /* 440 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 441 */
{ 4, TI, sys_shmget, "shmget" }, /* 442 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 443 */
{ 4, 0, printargs, "ipc_subcall" }, /* 440 */
{ 4, TI, sys_shmat, "shmat" }, /* 441 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 442 */
{ 4, TI, sys_shmget, "shmget" }, /* 443 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 444 */

View File

@ -451,8 +451,9 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 416 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */
{ 4, TN, sys_accept4, "accept4" }, /* 418 */
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */
#if SYS_ipc_subcall != 419
#if SYS_ipc_subcall != 420
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 419 */
{ 4, 0, printargs, "ipc_subcall" }, /* 420 */

View File

@ -99,6 +99,7 @@ int sys_socket(),sys_bind(),sys_listen(),sys_accept(),sys_connect();
int sys_socketpair(),sys_sendto(),sys_send(),sys_recvfrom(),sys_recv();
int sys_sendmsg(),sys_recvmsg(),sys_shutdown(),sys_setsockopt(),sys_getsockopt();
int sys_getsockname(),sys_getpeername(),sys_pipe(),sys_accept4();
int sys_recvmmsg();
int sys_setresuid(), sys_setresgid(), sys_getresuid(), sys_getresgid(), sys_pread();
int sys_pwrite(), sys_getcwd();
@ -233,8 +234,9 @@ int sys_signalfd(), sys_timerfd(), sys_eventfd();
#define SYS_sub_sendmsg (SYS_socket_subcall + 16)
#define SYS_sub_recvmsg (SYS_socket_subcall + 17)
#define SYS_sub_accept4 (SYS_socket_subcall + 18)
#define SYS_sub_recvmmsg (SYS_socket_subcall + 19)
#define SYS_socket_nsubcalls 19
#define SYS_socket_nsubcalls 20
#define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls))
#define SYS_sub_semop (SYS_ipc_subcall + 1)

View File

@ -373,35 +373,36 @@
{ 5, TN, sys_sendmsg, "sendmsg" }, /* 369 */
{ 5, TN, sys_recvmsg, "recvmsg" }, /* 370 */
{ 4, TN, sys_accept4, "accept4" }, /* 371 */
#if SYS_ipc_subcall != 372
{ 5, TN, sys_recvmmsg, "recvmmsg" }, /* 372 */
#if SYS_ipc_subcall != 373
#error fix me
#endif
{ 4, 0, printargs, "ipc_subcall" }, /* 372 */
{ 4, TI, printargs, "semop" }, /* 373 */
{ 4, TI, sys_semget, "semget" }, /* 374 */
{ 4, TI, sys_semctl, "semctl" }, /* 375 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 376 */
{ 4, 0, printargs, "ipc_subcall" }, /* 377 */
{ 4, 0, printargs, "ipc_subcall" }, /* 373 */
{ 4, TI, printargs, "semop" }, /* 374 */
{ 4, TI, sys_semget, "semget" }, /* 375 */
{ 4, TI, sys_semctl, "semctl" }, /* 376 */
{ 5, TI, sys_semtimedop, "semtimedop" }, /* 377 */
{ 4, 0, printargs, "ipc_subcall" }, /* 378 */
{ 4, 0, printargs, "ipc_subcall" }, /* 379 */
{ 4, 0, printargs, "ipc_subcall" }, /* 380 */
{ 4, 0, printargs, "ipc_subcall" }, /* 381 */
{ 4, 0, printargs, "ipc_subcall" }, /* 382 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 383 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 384 */
{ 4, TI, sys_msgget, "msgget" }, /* 385 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 386 */
{ 4, 0, printargs, "ipc_subcall" }, /* 387 */
{ 4, 0, printargs, "ipc_subcall" }, /* 383 */
{ 4, TI, sys_msgsnd, "msgsnd" }, /* 384 */
{ 4, TI, sys_msgrcv, "msgrcv" }, /* 385 */
{ 4, TI, sys_msgget, "msgget" }, /* 386 */
{ 4, TI, sys_msgctl, "msgctl" }, /* 387 */
{ 4, 0, printargs, "ipc_subcall" }, /* 388 */
{ 4, 0, printargs, "ipc_subcall" }, /* 389 */
{ 4, 0, printargs, "ipc_subcall" }, /* 390 */
{ 4, 0, printargs, "ipc_subcall" }, /* 391 */
{ 4, 0, printargs, "ipc_subcall" }, /* 392 */
{ 4, TI, sys_shmat, "shmat" }, /* 393 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 394 */
{ 4, TI, sys_shmget, "shmget" }, /* 395 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 396 */
{ 5, 0, printargs, "SYS_397" }, /* 397 */
{ 5, 0, printargs, "SYS_398" }, /* 398 */
{ 5, 0, printargs, "SYS_399" }, /* 399 */
{ 5, 0, printargs, "SYS_400" }, /* 400 */
{ 4, 0, printargs, "ipc_subcall" }, /* 393 */
{ 4, TI, sys_shmat, "shmat" }, /* 394 */
{ 4, TI, sys_shmdt, "shmdt" }, /* 395 */
{ 4, TI, sys_shmget, "shmget" }, /* 396 */
{ 4, TI, sys_shmctl, "shmctl" }, /* 397 */
{ 5, 0, printargs, "SYS_397" }, /* 398 */
{ 5, 0, printargs, "SYS_398" }, /* 399 */
{ 5, 0, printargs, "SYS_399" }, /* 400 */
{ 5, 0, printargs, "SYS_400" }, /* 401 */

View File

@ -113,6 +113,7 @@ int sys_socket(), sys_bind(), sys_connect(), sys_listen(), sys_accept4();
int sys_accept(), sys_getsockname(), sys_getpeername(), sys_socketpair();
int sys_send(), sys_recv(), sys_sendto(), sys_recvfrom();
int sys_shutdown(), sys_setsockopt(), sys_getsockopt();
int sys_recvmmsg();
/* *at syscalls */
int sys_fchmodat();
@ -228,8 +229,9 @@ int sys_osf_utimes();
#define SYS_sub_sendmsg (SYS_socket_subcall + 16)
#define SYS_sub_recvmsg (SYS_socket_subcall + 17)
#define SYS_sub_accept4 (SYS_socket_subcall + 18)
#define SYS_sub_recvmmsg (SYS_socket_subcall + 19)
#define SYS_socket_nsubcalls 19
#define SYS_socket_nsubcalls 20
#endif /* !(ALPHA || MIPS || HPPA) */
/* sys_ipc subcalls */

81
net.c
View File

@ -1184,6 +1184,30 @@ printcmsghdr(struct tcb *tcp, unsigned long addr, unsigned long len)
tprintf(", ...}");
}
static void
do_msghdr(struct tcb *tcp, struct msghdr *msg)
{
tprintf("{msg_name(%d)=", msg->msg_namelen);
printsock(tcp, (long)msg->msg_name, msg->msg_namelen);
tprintf(", msg_iov(%lu)=", (unsigned long)msg->msg_iovlen);
tprint_iov(tcp, (unsigned long)msg->msg_iovlen,
(unsigned long)msg->msg_iov);
#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
tprintf(", msg_controllen=%lu", (unsigned long)msg->msg_controllen);
if (msg->msg_controllen)
printcmsghdr(tcp, (unsigned long) msg->msg_control,
msg->msg_controllen);
tprintf(", msg_flags=");
printflags(msg_flags, msg->msg_flags, "MSG_???");
#else /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */
tprintf("msg_accrights=%#lx, msg_accrightslen=%u",
(unsigned long) msg->msg_accrights, msg->msg_accrightslen);
#endif /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */
tprintf("}");
}
static void
printmsghdr(tcp, addr)
struct tcb *tcp;
@ -1195,27 +1219,28 @@ long addr;
tprintf("%#lx", addr);
return;
}
tprintf("{msg_name(%d)=", msg.msg_namelen);
printsock(tcp, (long)msg.msg_name, msg.msg_namelen);
tprintf(", msg_iov(%lu)=", (unsigned long)msg.msg_iovlen);
tprint_iov(tcp, (unsigned long)msg.msg_iovlen,
(unsigned long)msg.msg_iov);
#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
tprintf(", msg_controllen=%lu", (unsigned long)msg.msg_controllen);
if (msg.msg_controllen)
printcmsghdr(tcp, (unsigned long) msg.msg_control,
msg.msg_controllen);
tprintf(", msg_flags=");
printflags(msg_flags, msg.msg_flags, "MSG_???");
#else /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */
tprintf("msg_accrights=%#lx, msg_accrightslen=%u",
(unsigned long) msg.msg_accrights, msg.msg_accrightslen);
#endif /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */
tprintf("}");
do_msghdr(tcp, &msg);
}
#ifdef LINUX
static void
printmmsghdr(struct tcb *tcp, long addr)
{
struct mmsghdr {
struct msghdr msg_hdr;
unsigned msg_len;
} mmsg;
if (umove(tcp, addr, &mmsg) < 0) {
tprintf("%#lx", addr);
return;
}
tprintf("{");
do_msghdr(tcp, &mmsg.msg_hdr);
tprintf(", %u}", mmsg.msg_len);
}
#endif
#endif /* HAVE_SENDMSG */
/*
@ -1503,6 +1528,24 @@ struct tcb *tcp;
return 0;
}
#ifdef LINUX
int
sys_recvmmsg(struct tcb *tcp)
{
if (entering(tcp)) {
tprintf("%ld, ", tcp->u_arg[0]);
printmmsghdr(tcp, tcp->u_arg[1]);
tprintf(", %ld, ", tcp->u_arg[2]);
/* flags */
printflags(msg_flags, tcp->u_arg[3], "MSG_???");
/* timeout */
tprintf(", ");
print_timespec(tcp, tcp->u_arg[4]);
}
return 0;
}
#endif
#endif /* HAVE_SENDMSG */
int