Commit feba3900 authored by Martijn Coenen's avatar Martijn Coenen Committed by Greg Kroah-Hartman

binder: Split flat_binder_object

flat_binder_object is used for both handling
binder objects and file descriptors, even though
the two are mostly independent. Since we'll
have more fixup objects in binder in the future,
instead of extending flat_binder_object again,
split out file descriptors to their own object
while retaining backwards compatibility to
existing user-space clients. All binder objects
just share a header.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Martijn Coenen <maco@google.com>
Cc: Arve Hjønnevåg <arve@android.com>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Serban Constantinescu <serban.constantinescu@arm.com>
Cc: Dmitry Shmidt <dimitrysh@google.com>
Cc: Rom Lemarchand <romlem@google.com>
Cc: Android Kernel Team <kernel-team@android.com>
Signed-off-by: default avatarMartijn Coenen <maco@google.com>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8fa8bea7
This diff is collapsed.
...@@ -48,6 +48,14 @@ typedef __u64 binder_size_t; ...@@ -48,6 +48,14 @@ typedef __u64 binder_size_t;
typedef __u64 binder_uintptr_t; typedef __u64 binder_uintptr_t;
#endif #endif
/**
* struct binder_object_header - header shared by all binder metadata objects.
* @type: type of the object
*/
struct binder_object_header {
__u32 type;
};
/* /*
* This is the flattened representation of a Binder object for transfer * This is the flattened representation of a Binder object for transfer
* between processes. The 'offsets' supplied as part of a binder transaction * between processes. The 'offsets' supplied as part of a binder transaction
...@@ -56,9 +64,8 @@ typedef __u64 binder_uintptr_t; ...@@ -56,9 +64,8 @@ typedef __u64 binder_uintptr_t;
* between processes. * between processes.
*/ */
struct flat_binder_object { struct flat_binder_object {
/* 8 bytes for large_flat_header. */ struct binder_object_header hdr;
__u32 type; __u32 flags;
__u32 flags;
/* 8 bytes of data. */ /* 8 bytes of data. */
union { union {
...@@ -70,6 +77,24 @@ struct flat_binder_object { ...@@ -70,6 +77,24 @@ struct flat_binder_object {
binder_uintptr_t cookie; binder_uintptr_t cookie;
}; };
/**
* struct binder_fd_object - describes a filedescriptor to be fixed up.
* @hdr: common header structure
* @pad_flags: padding to remain compatible with old userspace code
* @pad_binder: padding to remain compatible with old userspace code
* @fd: file descriptor
* @cookie: opaque data, used by user-space
*/
struct binder_fd_object {
struct binder_object_header hdr;
__u32 pad_flags;
union {
binder_uintptr_t pad_binder;
__u32 fd;
};
binder_uintptr_t cookie;
};
/* /*
* On 64-bit platforms where user code may run in 32-bits the driver must * On 64-bit platforms where user code may run in 32-bits the driver must
* translate the buffer (and local binder) addresses appropriately. * translate the buffer (and local binder) addresses appropriately.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment