1 /* Copyright 2008 The Android Open Source Project
8 #include <linux/binder.h>
14 char *data; /* pointer to read/write from */
15 binder_size_t *offs; /* array of offsets */
16 size_t data_avail; /* bytes available in data buffer */
17 size_t offs_avail; /* entries available in offsets array */
19 char *data0; /* start of data buffer */
20 binder_size_t *offs0; /* start of offsets buffer */
26 void (*func)(struct binder_state *bs, void *ptr);
30 /* the one magic handle */
31 #define BINDER_SERVICE_MANAGER 0U
33 #define SVC_MGR_NAME "android.os.IServiceManager"
36 /* Must match definitions in IBinder.h and IServiceManager.h */
37 PING_TRANSACTION = B_PACK_CHARS('_','P','N','G'),
38 SVC_MGR_GET_SERVICE = 1,
39 SVC_MGR_CHECK_SERVICE,
41 SVC_MGR_LIST_SERVICES,
44 typedef int (*binder_handler)(struct binder_state *bs,
45 struct binder_transaction_data *txn,
46 struct binder_io *msg,
47 struct binder_io *reply);
49 struct binder_state *binder_open(size_t mapsize);
50 void binder_close(struct binder_state *bs);
52 /* initiate a blocking binder call
53 * - returns zero on success
55 int binder_call(struct binder_state *bs,
56 struct binder_io *msg, struct binder_io *reply,
57 uint32_t target, uint32_t code);
59 /* release any state associate with the binder_io
60 * - call once any necessary data has been extracted from the
61 * binder_io after binder_call() returns
62 * - can safely be called even if binder_call() fails
64 void binder_done(struct binder_state *bs,
65 struct binder_io *msg, struct binder_io *reply);
67 /* manipulate strong references */
68 void binder_acquire(struct binder_state *bs, uint32_t target);
69 void binder_release(struct binder_state *bs, uint32_t target);
71 void binder_link_to_death(struct binder_state *bs, uint32_t target, struct binder_death *death);
73 void binder_loop(struct binder_state *bs, binder_handler func);
75 int binder_become_context_manager(struct binder_state *bs);
77 /* allocate a binder_io, providing a stack-allocated working
78 * buffer, size of the working buffer, and how many object
79 * offset entries to reserve from the buffer
81 void bio_init(struct binder_io *bio, void *data,
82 size_t maxdata, size_t maxobjects);
84 void bio_put_obj(struct binder_io *bio, void *ptr);
85 void bio_put_ref(struct binder_io *bio, uint32_t handle);
86 void bio_put_uint32(struct binder_io *bio, uint32_t n);
87 void bio_put_string16(struct binder_io *bio, const uint16_t *str);
88 void bio_put_string16_x(struct binder_io *bio, const char *_str);
90 uint32_t bio_get_uint32(struct binder_io *bio);
91 uint16_t *bio_get_string16(struct binder_io *bio, size_t *sz);
92 uint32_t bio_get_ref(struct binder_io *bio);