Lines Matching refs:rb

568 static bool data_make_reusable(struct printk_ringbuffer *rb,  in data_make_reusable()  argument
574 struct prb_data_ring *data_ring = &rb->text_data_ring; in data_make_reusable()
575 struct prb_desc_ring *desc_ring = &rb->desc_ring; in data_make_reusable()
636 static bool data_push_tail(struct printk_ringbuffer *rb, unsigned long lpos) in data_push_tail() argument
638 struct prb_data_ring *data_ring = &rb->text_data_ring; in data_push_tail()
679 if (!data_make_reusable(rb, tail_lpos, lpos, &next_lpos)) { in data_push_tail()
771 static bool desc_push_tail(struct printk_ringbuffer *rb, in desc_push_tail() argument
774 struct prb_desc_ring *desc_ring = &rb->desc_ring; in desc_push_tail()
816 if (!data_push_tail(rb, desc.text_blk_lpos.next)) in desc_push_tail()
879 static bool desc_reserve(struct printk_ringbuffer *rb, unsigned long *id_out) in desc_reserve() argument
881 struct prb_desc_ring *desc_ring = &rb->desc_ring; in desc_reserve()
924 if (!desc_push_tail(rb, id_prev_wrap)) in desc_reserve()
1028 static char *data_alloc(struct printk_ringbuffer *rb, unsigned int size, in data_alloc() argument
1031 struct prb_data_ring *data_ring = &rb->text_data_ring; in data_alloc()
1054 if (!data_push_tail(rb, next_lpos - DATA_SIZE(data_ring))) { in data_alloc()
1113 static char *data_realloc(struct printk_ringbuffer *rb, unsigned int size, in data_realloc() argument
1116 struct prb_data_ring *data_ring = &rb->text_data_ring; in data_realloc()
1143 if (!data_push_tail(rb, next_lpos - DATA_SIZE(data_ring))) in data_realloc()
1366 bool prb_reserve_in_last(struct prb_reserved_entry *e, struct printk_ringbuffer *rb, in prb_reserve_in_last() argument
1369 struct prb_desc_ring *desc_ring = &rb->desc_ring; in prb_reserve_in_last()
1392 e->rb = rb; in prb_reserve_in_last()
1410 if (!data_check_size(&rb->text_data_ring, r->text_buf_size)) in prb_reserve_in_last()
1416 r->text_buf = data_alloc(rb, r->text_buf_size, in prb_reserve_in_last()
1419 if (!get_data(&rb->text_data_ring, &d->text_blk_lpos, &data_size)) in prb_reserve_in_last()
1434 if (!data_check_size(&rb->text_data_ring, r->text_buf_size)) in prb_reserve_in_last()
1440 r->text_buf = data_realloc(rb, r->text_buf_size, in prb_reserve_in_last()
1448 e->text_space = space_used(&rb->text_data_ring, &d->text_blk_lpos); in prb_reserve_in_last()
1477 static u64 desc_last_finalized_seq(struct printk_ringbuffer *rb) in desc_last_finalized_seq() argument
1479 struct prb_desc_ring *desc_ring = &rb->desc_ring; in desc_last_finalized_seq()
1490 return __ulseq_to_u64seq(rb, ulseq); in desc_last_finalized_seq()
1493 static bool _prb_read_valid(struct printk_ringbuffer *rb, u64 *seq,
1501 static void desc_update_last_finalized(struct printk_ringbuffer *rb) in desc_update_last_finalized() argument
1503 struct prb_desc_ring *desc_ring = &rb->desc_ring; in desc_update_last_finalized()
1504 u64 old_seq = desc_last_finalized_seq(rb); in desc_update_last_finalized()
1515 while (_prb_read_valid(rb, &try_seq, NULL, NULL)) { in desc_update_last_finalized()
1553 old_seq = __ulseq_to_u64seq(rb, oldval); in desc_update_last_finalized()
1562 static void desc_make_final(struct printk_ringbuffer *rb, unsigned long id) in desc_make_final() argument
1564 struct prb_desc_ring *desc_ring = &rb->desc_ring; in desc_make_final()
1570 desc_update_last_finalized(rb); in desc_make_final()
1599 bool prb_reserve(struct prb_reserved_entry *e, struct printk_ringbuffer *rb, in prb_reserve() argument
1602 struct prb_desc_ring *desc_ring = &rb->desc_ring; in prb_reserve()
1608 if (!data_check_size(&rb->text_data_ring, r->text_buf_size)) in prb_reserve()
1619 if (!desc_reserve(rb, &id)) { in prb_reserve()
1621 atomic_long_inc(&rb->fail); in prb_reserve()
1641 e->rb = rb; in prb_reserve()
1667 desc_make_final(rb, DESC_ID(id - 1)); in prb_reserve()
1669 r->text_buf = data_alloc(rb, r->text_buf_size, &d->text_blk_lpos, id); in prb_reserve()
1680 e->text_space = space_used(&rb->text_data_ring, &d->text_blk_lpos); in prb_reserve()
1692 struct prb_desc_ring *desc_ring = &e->rb->desc_ring; in _prb_commit()
1748 struct prb_desc_ring *desc_ring = &e->rb->desc_ring; in prb_commit()
1760 desc_make_final(e->rb, e->id); in prb_commit()
1782 desc_update_last_finalized(e->rb); in prb_final_commit()
1907 static int prb_read(struct printk_ringbuffer *rb, u64 seq, in prb_read() argument
1910 struct prb_desc_ring *desc_ring = &rb->desc_ring; in prb_read()
1936 if (!copy_data(&rb->text_data_ring, &desc.text_blk_lpos, info->text_len, in prb_read()
1946 u64 prb_first_seq(struct printk_ringbuffer *rb) in prb_first_seq() argument
1948 struct prb_desc_ring *desc_ring = &rb->desc_ring; in prb_first_seq()
1955 id = atomic_long_read(&rb->desc_ring.tail_id); /* LMM(prb_first_seq:A) */ in prb_first_seq()
2005 u64 prb_next_reserve_seq(struct printk_ringbuffer *rb) in prb_next_reserve_seq() argument
2007 struct prb_desc_ring *desc_ring = &rb->desc_ring; in prb_next_reserve_seq()
2024 last_finalized_seq = desc_last_finalized_seq(rb); in prb_next_reserve_seq()
2107 static bool _prb_read_valid(struct printk_ringbuffer *rb, u64 *seq, in _prb_read_valid() argument
2113 while ((err = prb_read(rb, *seq, r, line_count))) { in _prb_read_valid()
2114 tail_seq = prb_first_seq(rb); in _prb_read_valid()
2146 if (this_cpu_in_panic() && ((*seq + 1) < prb_next_reserve_seq(rb))) in _prb_read_valid()
2179 bool prb_read_valid(struct printk_ringbuffer *rb, u64 seq, in prb_read_valid() argument
2182 return _prb_read_valid(rb, &seq, r, NULL); in prb_read_valid()
2209 bool prb_read_valid_info(struct printk_ringbuffer *rb, u64 seq, in prb_read_valid_info() argument
2216 return _prb_read_valid(rb, &seq, &r, line_count); in prb_read_valid_info()
2234 u64 prb_first_valid_seq(struct printk_ringbuffer *rb) in prb_first_valid_seq() argument
2238 if (!_prb_read_valid(rb, &seq, NULL, NULL)) in prb_first_valid_seq()
2261 u64 prb_next_seq(struct printk_ringbuffer *rb) in prb_next_seq() argument
2265 seq = desc_last_finalized_seq(rb); in prb_next_seq()
2281 while (_prb_read_valid(rb, &seq, NULL, NULL)) in prb_next_seq()
2304 void prb_init(struct printk_ringbuffer *rb, in prb_init() argument
2312 rb->desc_ring.count_bits = descbits; in prb_init()
2313 rb->desc_ring.descs = descs; in prb_init()
2314 rb->desc_ring.infos = infos; in prb_init()
2315 atomic_long_set(&rb->desc_ring.head_id, DESC0_ID(descbits)); in prb_init()
2316 atomic_long_set(&rb->desc_ring.tail_id, DESC0_ID(descbits)); in prb_init()
2317 atomic_long_set(&rb->desc_ring.last_finalized_seq, 0); in prb_init()
2319 rb->text_data_ring.size_bits = textbits; in prb_init()
2320 rb->text_data_ring.data = text_buf; in prb_init()
2321 atomic_long_set(&rb->text_data_ring.head_lpos, BLK0_LPOS(textbits)); in prb_init()
2322 atomic_long_set(&rb->text_data_ring.tail_lpos, BLK0_LPOS(textbits)); in prb_init()
2324 atomic_long_set(&rb->fail, 0); in prb_init()