• Arnd Bergmann's avatar
    ARM: 9108/1: oabi-compat: rework epoll_wait/epoll_pwait emulation · 249dbe74
    Arnd Bergmann authored
    The epoll_wait() system call wrapper is one of the remaining users of
    the set_fs() infrasturcture for Arm. Changing it to not require set_fs()
    is rather complex unfortunately.
    
    The approach I'm taking here is to allow architectures to override
    the code that copies the output to user space, and let the oabi-compat
    implementation check whether it is getting called from an EABI or OABI
    system call based on the thread_info->syscall value.
    
    The in_oabi_syscall() check here mirrors the in_compat_syscall() and
    in_x32_syscall() helpers for 32-bit compat implementations on other
    architectures.
    
    Overall, the amount of code goes down, at least with the newly added
    sys_oabi_epoll_pwait() helper getting removed again. The downside
    is added complexity in the source code for the native implementation.
    There should be no difference in runtime performance except for Arm
    kernels with CONFIG_OABI_COMPAT enabled that now have to go through
    an external function call to check which of the two variants to use.
    Acked-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    249dbe74
syscall.h 2.23 KB