Skip to content
  • Arve Hjønnevåg's avatar
    staging: binder: Support concurrent 32 bit and 64 bit processes. · da49889d
    Arve Hjønnevåg authored
    
    
    For 64bit systems we want to use the same binder interface for 32bit and
    64bit processes. Thus the size and the layout of the structures passed
    between the kernel and the userspace has to be the same for both 32 and
    64bit processes.
    
    This change replaces all the uses of void* and size_t with
    binder_uintptr_t and binder_size_t. These are then typedefed to specific
    sizes depending on the use of the interface, as follows:
           * __u32 - on legacy 32bit only userspace
           * __u64 - on mixed 32/64bit userspace where all processes use the same
    interface.
    
    This change also increments the BINDER_CURRENT_PROTOCOL_VERSION to 8 and
    hooks the compat_ioctl entry for the mixed 32/64bit Android userspace.
    
    This patch also provides a CONFIG_ANDROID_BINDER_IPC_32BIT option for
    compatability, which if set which enables the old protocol, setting
    BINDER_CURRENT_PROTOCOL_VERSION to 7, on 32 bit systems.
    
    Please note that all 64bit kernels will use the 64bit Binder ABI.
    
    Cc: Colin Cross <ccross@android.com>
    Cc: Arve Hjønnevåg <arve@android.com>
    Cc: Serban Constantinescu <serban.constantinescu@arm.com>
    Cc: Android Kernel Team <kernel-team@android.com>
    Signed-off-by: default avatarArve Hjønnevåg <arve@android.com>
    [jstultz: Merged with upstream type changes. Various whitespace fixes
    and longer Kconfig description for checkpatch. Included improved commit
    message from Serban (with a few tweaks).]
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    da49889d