aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/android/uapi/binder.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/android/uapi/binder.h')
-rw-r--r--drivers/staging/android/uapi/binder.h169
1 files changed, 36 insertions, 133 deletions
diff --git a/drivers/staging/android/uapi/binder.h b/drivers/staging/android/uapi/binder.h
index 384658ac1bb4..4098c502fc36 100644
--- a/drivers/staging/android/uapi/binder.h
+++ b/drivers/staging/android/uapi/binder.h
@@ -21,9 +21,6 @@
#define _UAPI_LINUX_BINDER_H
#include <linux/ioctl.h>
-#ifdef CONFIG_COMPAT
-#include <linux/compat.h>
-#endif
#define B_PACK_CHARS(c1, c2, c3, c4) \
((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))
@@ -42,6 +39,14 @@ enum {
FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
};
+#ifdef BINDER_IPC_32BIT
+typedef __u32 binder_size_t;
+typedef __u32 binder_uintptr_t;
+#else
+typedef __u64 binder_size_t;
+typedef __u64 binder_uintptr_t;
+#endif
+
/*
* This is the flattened representation of a Binder object for transfer
* between processes. The 'offsets' supplied as part of a binder transaction
@@ -56,12 +61,12 @@ struct flat_binder_object {
/* 8 bytes of data. */
union {
- void __user *binder; /* local object */
- __u32 handle; /* remote object */
+ binder_uintptr_t binder; /* local object */
+ __u32 handle; /* remote object */
};
/* extra data associated with local object */
- void __user *cookie;
+ binder_uintptr_t cookie;
};
/*
@@ -70,12 +75,12 @@ struct flat_binder_object {
*/
struct binder_write_read {
- size_t write_size; /* bytes to write */
- size_t write_consumed; /* bytes consumed by driver */
- unsigned long write_buffer;
- size_t read_size; /* bytes to read */
- size_t read_consumed; /* bytes consumed by driver */
- unsigned long read_buffer;
+ binder_size_t write_size; /* bytes to write */
+ binder_size_t write_consumed; /* bytes consumed by driver */
+ binder_uintptr_t write_buffer;
+ binder_size_t read_size; /* bytes to read */
+ binder_size_t read_consumed; /* bytes consumed by driver */
+ binder_uintptr_t read_buffer;
};
/* Use with BINDER_VERSION, driver fills in fields. */
@@ -85,7 +90,11 @@ struct binder_version {
};
/* This is the current protocol version. */
+#ifdef BINDER_IPC_32BIT
#define BINDER_CURRENT_PROTOCOL_VERSION 7
+#else
+#define BINDER_CURRENT_PROTOCOL_VERSION 8
+#endif
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
@@ -123,17 +132,17 @@ struct binder_transaction_data {
*/
union {
__u32 handle; /* target descriptor of command transaction */
- void *ptr; /* target descriptor of return transaction */
+ binder_uintptr_t ptr; /* target descriptor of return transaction */
} target;
- void *cookie; /* target object cookie */
+ binder_uintptr_t cookie; /* target object cookie */
__u32 code; /* transaction command */
/* General information about the transaction. */
__u32 flags;
pid_t sender_pid;
uid_t sender_euid;
- size_t data_size; /* number of bytes of data */
- size_t offsets_size; /* number of bytes of offsets */
+ binder_size_t data_size; /* number of bytes of data */
+ binder_size_t offsets_size; /* number of bytes of offsets */
/* If this transaction is inline, the data immediately
* follows here; otherwise, it ends with a pointer to
@@ -142,22 +151,22 @@ struct binder_transaction_data {
union {
struct {
/* transaction data */
- const void __user *buffer;
+ binder_uintptr_t buffer;
/* offsets from buffer to flat_binder_object structs */
- const void __user *offsets;
+ binder_uintptr_t offsets;
} ptr;
__u8 buf[8];
} data;
};
struct binder_ptr_cookie {
- void *ptr;
- void *cookie;
+ binder_uintptr_t ptr;
+ binder_uintptr_t cookie;
};
struct binder_handle_cookie {
__u32 handle;
- void *cookie;
+ binder_uintptr_t cookie;
} __attribute__((packed));
struct binder_pri_desc {
@@ -167,8 +176,8 @@ struct binder_pri_desc {
struct binder_pri_ptr_cookie {
__s32 priority;
- void *ptr;
- void *cookie;
+ binder_uintptr_t ptr;
+ binder_uintptr_t cookie;
};
enum binder_driver_return_protocol {
@@ -243,11 +252,11 @@ enum binder_driver_return_protocol {
* stop threadpool thread
*/
- BR_DEAD_BINDER = _IOR('r', 15, void *),
+ BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t),
/*
* void *: cookie
*/
- BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, void *),
+ BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t),
/*
* void *: cookie
*/
@@ -273,7 +282,7 @@ enum binder_driver_command_protocol {
* Else you have acquired a primary reference on the object.
*/
- BC_FREE_BUFFER = _IOW('c', 3, void *),
+ BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t),
/*
* void *: ptr to transaction data received on a read
*/
@@ -328,117 +337,11 @@ enum binder_driver_command_protocol {
* void *: cookie
*/
- BC_DEAD_BINDER_DONE = _IOW('c', 16, void *),
+ BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
/*
* void *: cookie
*/
};
-/* Support for 32bit userspace on a 64bit system */
-#ifdef CONFIG_COMPAT
-struct compat_flat_binder_object {
- /* 8 bytes for large_flat_header. */
- __u32 type;
- __u32 flags;
-
- /* 8 bytes of data. */
- union {
- compat_uptr_t binder; /* local object */
- __u32 handle; /* remote object */
- };
-
- /* extra data associated with local object */
- compat_uptr_t cookie;
-};
-
-struct compat_binder_write_read {
- compat_size_t write_size; /* bytes to write */
- compat_size_t write_consumed; /* bytes consumed by driver */
- compat_ulong_t write_buffer;
- compat_size_t read_size; /* bytes to read */
- compat_size_t read_consumed; /* bytes consumed by driver */
- compat_ulong_t read_buffer;
-};
-
-#define COMPAT_BINDER_WRITE_READ _IOWR('b', 1, struct compat_binder_write_read)
-
-struct compat_binder_transaction_data {
- /* The first two are only used for bcTRANSACTION and brTRANSACTION,
- * identifying the target and contents of the transaction.
- */
- union {
- __u32 handle; /* target descriptor of command transaction */
- compat_uptr_t ptr; /* target descriptor of return transaction */
- } target;
- compat_uptr_t cookie; /* target object cookie */
- __u32 code; /* transaction command */
-
- /* General information about the transaction. */
- __u32 flags;
- pid_t sender_pid;
- uid_t sender_euid;
- compat_size_t data_size; /* number of bytes of data */
- compat_size_t offsets_size; /* number of bytes of offsets */
-
- /* If this transaction is inline, the data immediately
- * follows here; otherwise, it ends with a pointer to
- * the data buffer.
- */
- union {
- struct {
- /* transaction data */
- compat_uptr_t buffer;
- /* offsets from buffer to flat_binder_object structs */
- compat_uptr_t offsets;
- } ptr;
- __u8 buf[8];
- } data;
-};
-
-struct compat_binder_ptr_cookie {
- compat_uptr_t ptr;
- compat_uptr_t cookie;
-};
-
-/* legacy - not used anymore */
-struct compat_binder_pri_ptr_cookie {
- __s32 priority;
- compat_uptr_t ptr;
- compat_uptr_t cookie;
-};
-
-enum compat_binder_driver_return_protocol {
- COMPAT_BR_TRANSACTION = _IOR('r', 2, struct compat_binder_transaction_data),
- COMPAT_BR_REPLY = _IOR('r', 3, struct compat_binder_transaction_data),
-
- COMPAT_BR_INCREFS = _IOR('r', 7, struct compat_binder_ptr_cookie),
- COMPAT_BR_ACQUIRE = _IOR('r', 8, struct compat_binder_ptr_cookie),
- COMPAT_BR_RELEASE = _IOR('r', 9, struct compat_binder_ptr_cookie),
- COMPAT_BR_DECREFS = _IOR('r', 10, struct compat_binder_ptr_cookie),
-
- /* legacy - not used anymore */
- COMPAT_BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct compat_binder_pri_ptr_cookie),
-
- COMPAT_BR_DEAD_BINDER = _IOR('r', 15, compat_uptr_t),
- COMPAT_BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, compat_uptr_t),
-};
-
-enum compat_binder_driver_command_protocol {
- COMPAT_BC_TRANSACTION = _IOW('c', 0, struct compat_binder_transaction_data),
- COMPAT_BC_REPLY = _IOW('c', 1, struct compat_binder_transaction_data),
-
- COMPAT_BC_FREE_BUFFER = _IOW('c', 3, compat_uptr_t),
-
- COMPAT_BC_INCREFS_DONE = _IOW('c', 8, struct compat_binder_ptr_cookie),
- COMPAT_BC_ACQUIRE_DONE = _IOW('c', 9, struct compat_binder_ptr_cookie),
-
- COMPAT_BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct compat_binder_ptr_cookie),
- COMPAT_BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct compat_binder_ptr_cookie),
-
- COMPAT_BC_DEAD_BINDER_DONE = _IOW('c', 16, compat_uptr_t),
-};
-#endif /* CONFIG_COMPAT */
-
-
#endif /* _UAPI_LINUX_BINDER_H */