* 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. --- linux/arm/syscallent.h | 33 ++++++++++--------- linux/bfin/syscallent.h | 1 + linux/i386/syscallent.h | 33 ++++++++++--------- linux/ia64/syscallent.h | 5 +-- linux/m68k/syscallent.h | 33 ++++++++++--------- linux/powerpc/syscallent.h | 43 ++++++++++++------------ linux/s390/syscallent.h | 33 ++++++++++--------- linux/s390x/syscallent.h | 33 ++++++++++--------- linux/sh/syscallent.h | 33 ++++++++++--------- linux/sh64/syscallent.h | 5 ++- linux/sparc/syscall.h | 4 ++- linux/sparc/syscallent.h | 41 ++++++++++++----------- linux/syscall.h | 4 ++- net.c | 77 ++++++++++++++++++++++++++++++++++---------- 14 files changed, 217 insertions(+), 161 deletions(-)
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h index 9d7802b..9b3c0fe 100644 --- a/linux/arm/syscallent.h +++ b/linux/arm/syscallent.h @@ -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 diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h index 9577d1f..005804c 100644 --- a/linux/bfin/syscallent.h +++ b/linux/bfin/syscallent.h @@ -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 */ diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h index 6f26467..070ee70 100644 --- a/linux/i386/syscallent.h +++ b/linux/i386/syscallent.h @@ -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 */ diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h index 2391fcf..8755795 100644 --- a/linux/ia64/syscallent.h +++ b/linux/ia64/syscallent.h @@ -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 */ diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h index f24bf31..27523c3 100644 --- a/linux/m68k/syscallent.h +++ b/linux/m68k/syscallent.h @@ -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 */ diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h index 12e9ba1..68fe2cf 100644 --- a/linux/powerpc/syscallent.h +++ b/linux/powerpc/syscallent.h @@ -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 */ diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h index 112d18e..3411ca8 100644 --- a/linux/s390/syscallent.h +++ b/linux/s390/syscallent.h @@ -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 */ diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h index 24a43ca..ca5ce26 100644 --- a/linux/s390x/syscallent.h +++ b/linux/s390x/syscallent.h @@ -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 */ diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h index e5af00e..523bc10 100644 --- a/linux/sh/syscallent.h +++ b/linux/sh/syscallent.h @@ -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 */ diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h index f3a6404..96191c1 100644 --- a/linux/sh64/syscallent.h +++ b/linux/sh64/syscallent.h @@ -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 */ diff --git a/linux/sparc/syscall.h b/linux/sparc/syscall.h index e47b510..03e3a71 100644 --- a/linux/sparc/syscall.h +++ b/linux/sparc/syscall.h @@ -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) diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h index 3c6b2f8..2ffd9f0 100644 --- a/linux/sparc/syscallent.h +++ b/linux/sparc/syscallent.h @@ -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 */ diff --git a/linux/syscall.h b/linux/syscall.h index 03c8b81..1ba3764 100644 --- a/linux/syscall.h +++ b/linux/syscall.h @@ -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(); @@ -227,8 +228,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 */ diff --git a/net.c b/net.c index 511f720..ded21a3 100644 --- a/net.c +++ b/net.c @@ -1185,6 +1185,30 @@ printcmsghdr(struct tcb *tcp, unsigned long addr, unsigned long len) } 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; long addr; @@ -1195,26 +1219,27 @@ long addr; tprintf("%#lx", addr); return; } - tprintf("{msg_name(%d)=", msg.msg_namelen); - printsock(tcp, (long)msg.msg_name, msg.msg_namelen); + do_msghdr(tcp, &msg); +} - tprintf(", msg_iov(%lu)=", (unsigned long)msg.msg_iovlen); - tprint_iov(tcp, (unsigned long)msg.msg_iovlen, - (unsigned long)msg.msg_iov); +#ifdef LINUX +static void +printmmsghdr(struct tcb *tcp, long addr) +{ + struct mmsghdr { + struct msghdr msg_hdr; + unsigned msg_len; + } mmsg; -#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("}"); + 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 -- 1.6.6.2 Andreas. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ------------------------------------------------------------------------------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel