Lines Matching defs:rb

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