From: Dmitry V. L. <ld...@al...> - 2013-05-07 15:59:04
|
On Tue, May 07, 2013 at 11:42:28AM -0400, Chris Metcalf wrote: > On 5/7/2013 11:38 AM, Dmitry V. Levin wrote: > > On Tue, May 07, 2013 at 09:30:45AM -0400, Mike Frysinger wrote: > >> > On Tuesday 07 May 2013 08:14:46 Chris Metcalf wrote: > >>> > > On 5/6/2013 7:43 PM, Dmitry V. Levin wrote: > >>>> > > > On Mon, May 06, 2013 at 03:21:38PM -0700, Chris Zankel wrote: > >>>>> > > >> The Xtensa architecture also used dedicated syscalls and doesn't > >>>>> > > >> need to multiplex ipc and socket subcalls. > >>>> > > > > >>>> > > > Applied, thanks. > >>> > > > >>> > > No new architecture will ever use the subcall model, so in fact it's > >>> > > probably cleaner to just list the ones that do use it. > >> > > >> > yeah, i was thinking it might be better to move those ifdefs out of the common > >> > code and just declare it in the relevant syscallent.h header > > Yes, something like this? > > Rather than all the checks to see if SYS_socket_subcall has the right value, I'd just require all platforms to define it first, and then in linux/subcall.h, add an #ifndef to error out if it's not defined. I agree. Makefile.am | 1 + linux/arm/syscallent.h | 5 ++--- linux/i386/syscallent.h | 6 ++---- linux/m68k/syscallent.h | 6 ++---- linux/powerpc/syscallent.h | 6 ++---- linux/s390/syscallent.h | 6 ++---- linux/s390x/syscallent.h | 6 ++---- linux/sh/syscallent.h | 6 ++---- linux/sh64/syscallent.h | 6 ++---- linux/sparc/syscallent.h | 5 ++--- linux/subcall.h | 6 ++++++ linux/syscall.h | 24 ------------------------ 12 files changed, 25 insertions(+), 58 deletions(-) create mode 100644 linux/subcall.h diff --git a/Makefile.am b/Makefile.am index 639430d..99d9eaf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -151,6 +151,7 @@ EXTRA_DIST = \ linux/sparc64/syscallent.h \ linux/sparc64/syscallent1.h \ linux/sparc64/syscallent2.h \ + linux/subcall.h \ linux/syscall.h \ linux/tile/ioctlent.h.in \ linux/tile/syscallent.h \ diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h index b1fd370..8976a82 100644 --- a/linux/arm/syscallent.h +++ b/linux/arm/syscallent.h @@ -431,9 +431,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ -# if SYS_socket_subcall != 400 -# error fix me -# endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h index 8a1d617..7e40f32 100644 --- a/linux/i386/syscallent.h +++ b/linux/i386/syscallent.h @@ -428,10 +428,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h index b872a09..222a522 100644 --- a/linux/m68k/syscallent.h +++ b/linux/m68k/syscallent.h @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h index 8db525d..ada58f7 100644 --- a/linux/powerpc/syscallent.h +++ b/linux/powerpc/syscallent.h @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h index c68362e..8faeba6 100644 --- a/linux/s390/syscallent.h +++ b/linux/s390/syscallent.h @@ -428,10 +428,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h index 05b296c..1b19a41 100644 --- a/linux/s390x/syscallent.h +++ b/linux/s390x/syscallent.h @@ -427,10 +427,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h index 577a4f6..af06962 100644 --- a/linux/sh/syscallent.h +++ b/linux/sh/syscallent.h @@ -430,10 +430,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h index 246417d..fa9c0aa 100644 --- a/linux/sh64/syscallent.h +++ b/linux/sh64/syscallent.h @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h index de46480..dc00096 100644 --- a/linux/sparc/syscallent.h +++ b/linux/sparc/syscallent.h @@ -351,9 +351,8 @@ { 5, 0, NULL, NULL }, /* 350 */ { 5, 0, NULL, NULL }, /* 351 */ { 5, 0, NULL, NULL }, /* 352 */ -#if SYS_socket_subcall != 353 - #error fix me -#endif +#define SYS_socket_subcall 353 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 353 */ { 3, TN, sys_socket, "socket" }, /* 354 */ { 3, TN, sys_bind, "bind" }, /* 355 */ diff --git a/linux/subcall.h b/linux/subcall.h new file mode 100644 index 0000000..54f7fca --- /dev/null +++ b/linux/subcall.h @@ -0,0 +1,6 @@ +#ifndef SYS_socket_subcall +# error SYS_socket_subcall is not defined +#endif +#define SYS_socket_nsubcalls 20 +#define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls)) +#define SYS_ipc_nsubcalls 25 diff --git a/linux/syscall.h b/linux/syscall.h index 0c87fa6..f6afcac 100644 --- a/linux/syscall.h +++ b/linux/syscall.h @@ -313,30 +313,6 @@ int sys_osf_utimes(); int sys_osf_wait4(); #endif -#if defined ALPHA \ - || defined __ARM_EABI__ \ - || defined BFIN \ - || defined HPPA \ - || defined METAG \ - || defined MIPS \ - || defined TILE \ - || defined XTENSA -/* - * This architecture does not have a socketcall or ipc subcall, - * it has dedicated syscalls instead, so there is no need - * to implement socket or ipc subcall decoding. - */ -#else -# if defined SPARC || defined SPARC64 -# define SYS_socket_subcall 353 -# else -# define SYS_socket_subcall 400 -# endif -# define SYS_socket_nsubcalls 20 -# define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls)) -# define SYS_ipc_nsubcalls 25 -#endif - #if defined(ALPHA) || defined(IA64) || defined(SPARC) || defined(SPARC64) int sys_getpagesize(); #endif -- ldv |