Messages in this thread | | | From | David Laight <> | Subject | RE: [PATCH v2 seccomp 2/6] asm/syscall.h: Add syscall_arches[] array | Date | Thu, 24 Sep 2020 13:47:54 +0000 |
| |
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)
| |