Home | History | Annotate | Download | only in servicemanager

Lines Matching refs:bio

194 int binder_parse(struct binder_state *bs, struct binder_io *bio,
247 if (bio) {
248 bio_init_from_txn(bio, txn);
249 bio = 0;
394 void bio_init_from_txn(struct binder_io *bio, struct binder_txn *txn)
396 bio->data = bio->data0 = txn->data;
397 bio->offs = bio->offs0 = txn->offs;
398 bio->data_avail = txn->data_size;
399 bio->offs_avail = txn->offs_size / 4;
400 bio->flags = BIO_F_SHARED;
403 void bio_init(struct binder_io *bio, void *data,
409 bio->flags = BIO_F_OVERFLOW;
410 bio->data_avail = 0;
411 bio->offs_avail = 0;
415 bio->data = bio->data0 = data + n;
416 bio->offs = bio->offs0 = data;
417 bio->data_avail = maxdata - n;
418 bio->offs_avail = maxoffs;
419 bio->flags = 0;
422 static void *bio_alloc(struct binder_io *bio, uint32_t size)
425 if (size > bio->data_avail) {
426 bio->flags |= BIO_F_OVERFLOW;
429 void *ptr = bio->data;
430 bio->data += size;
431 bio->data_avail -= size;
449 static struct binder_object *bio_alloc_obj(struct binder_io *bio)
453 obj = bio_alloc(bio, sizeof(*obj));
455 if (obj && bio->offs_avail) {
456 bio->offs_avail--;
457 *bio->offs++ = ((char*) obj) - ((char*) bio->data0);
461 bio->flags |= BIO_F_OVERFLOW;
465 void bio_put_uint32(struct binder_io *bio, uint32_t n)
467 uint32_t *ptr = bio_alloc(bio, sizeof(n));
472 void bio_put_obj(struct binder_io *bio, void *ptr)
476 obj = bio_alloc_obj(bio);
486 void bio_put_ref(struct binder_io *bio, void *ptr)
491 obj = bio_alloc_obj(bio);
493 obj = bio_alloc(bio, sizeof(*obj));
504 void bio_put_string16(struct binder_io *bio, const uint16_t *str)
510 bio_put_uint32(bio, 0xffffffff);
518 bio_put_uint32(bio, 0xffffffff);
522 bio_put_uint32(bio, len);
524 ptr = bio_alloc(bio, len);
529 void bio_put_string16_x(struct binder_io *bio, const char *_str)
536 bio_put_uint32(bio, 0xffffffff);
543 bio_put_uint32(bio, 0xffffffff);
547 bio_put_uint32(bio, len);
548 ptr = bio_alloc(bio, (len + 1) * sizeof(uint16_t));
557 static void *bio_get(struct binder_io *bio, uint32_t size)
561 if (bio->data_avail < size){
562 bio->data_avail = 0;
563 bio->flags |= BIO_F_OVERFLOW;
566 void *ptr = bio->data;
567 bio->data += size;
568 bio->data_avail -= size;
573 uint32_t bio_get_uint32(struct binder_io *bio)
575 uint32_t *ptr = bio_get(bio, sizeof(*ptr));
579 uint16_t *bio_get_string16(struct binder_io *bio, unsigned *sz)
582 len = bio_get_uint32(bio);
585 return bio_get(bio, (len + 1) * sizeof(uint16_t));
588 static struct binder_object *_bio_get_obj(struct binder_io *bio)
591 unsigned off = bio->data - bio->data0;
594 for (n = 0; n < bio->offs_avail; n++) {
595 if (bio->offs[n] == off)
596 return bio_get(bio, sizeof(struct binder_object));
599 bio->data_avail = 0;
600 bio->flags |= BIO_F_OVERFLOW;
604 void *bio_get_ref(struct binder_io *bio)
608 obj = _bio_get_obj(bio);