RE: [PATCH v2 seccomp 2/6] asm/syscall.h: Add syscall_arches[] array
From: David Laight
Date: Thu Sep 24 2020 - 09:48:25 EST
From: YiFei Zhu
> Sent: 24 September 2020 13:44
>
> Seccomp cache emulator needs to know all the architecture numbers
> that syscall_get_arch() could return for the kernel build in order
> to generate a cache for all of them.
>
> The array is declared in header as static __maybe_unused const
> to maximize compiler optimiation opportunities such as loop
> unrolling.
I doubt the compiler will do what you want.
Looking at it, in most cases there are one or two entries.
I think only MIPS has three.
So a static inline function that contains a list of
conditionals will generate better code that any kind of
array lookup.
For x86-64 you end up with something like:
#ifdef CONFIG_IA32_EMULATION
if (sd->arch == AUDIT_ARCH_I386) return xxx;
#endif
return yyy;
Probably saves you having multiple arrays that need to be
kept carefully in step.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)