Lines Matching refs:kbuf

72 	unsigned long long (*read_long)(struct kbuffer *kbuf, void *ptr);
73 int (*next_event)(struct kbuffer *kbuf);
90 static int do_swap(struct kbuffer *kbuf) in do_swap() argument
92 return ((kbuf->flags & KBUFFER_FL_HOST_BIG_ENDIAN) + kbuf->flags) & in do_swap()
140 static unsigned long long read_8(struct kbuffer *kbuf, void *ptr) in read_8() argument
142 return kbuf->read_8(ptr); in read_8()
145 static unsigned int read_4(struct kbuffer *kbuf, void *ptr) in read_4() argument
147 return kbuf->read_4(ptr); in read_4()
150 static unsigned long long __read_long_8(struct kbuffer *kbuf, void *ptr) in __read_long_8() argument
152 return kbuf->read_8(ptr); in __read_long_8()
155 static unsigned long long __read_long_4(struct kbuffer *kbuf, void *ptr) in __read_long_4() argument
157 return kbuf->read_4(ptr); in __read_long_4()
160 static unsigned long long read_long(struct kbuffer *kbuf, void *ptr) in read_long() argument
162 return kbuf->read_long(kbuf, ptr); in read_long()
165 static int calc_index(struct kbuffer *kbuf, void *ptr) in calc_index() argument
167 return (unsigned long)ptr - (unsigned long)kbuf->data; in calc_index()
170 static int __next_event(struct kbuffer *kbuf);
182 struct kbuffer *kbuf; in kbuffer_alloc() local
205 kbuf = zmalloc(sizeof(*kbuf)); in kbuffer_alloc()
206 if (!kbuf) in kbuffer_alloc()
209 kbuf->flags = flags; in kbuffer_alloc()
212 kbuf->flags |= KBUFFER_FL_HOST_BIG_ENDIAN; in kbuffer_alloc()
214 if (do_swap(kbuf)) { in kbuffer_alloc()
215 kbuf->read_8 = __read_8_sw; in kbuffer_alloc()
216 kbuf->read_4 = __read_4_sw; in kbuffer_alloc()
218 kbuf->read_8 = __read_8; in kbuffer_alloc()
219 kbuf->read_4 = __read_4; in kbuffer_alloc()
222 if (kbuf->flags & KBUFFER_FL_LONG_8) in kbuffer_alloc()
223 kbuf->read_long = __read_long_8; in kbuffer_alloc()
225 kbuf->read_long = __read_long_4; in kbuffer_alloc()
228 kbuf->next_event = __next_event; in kbuffer_alloc()
230 return kbuf; in kbuffer_alloc()
238 void kbuffer_free(struct kbuffer *kbuf) in kbuffer_free() argument
240 free(kbuf); in kbuffer_free()
243 static unsigned int type4host(struct kbuffer *kbuf, in type4host() argument
246 if (kbuf->flags & KBUFFER_FL_BIG_ENDIAN) in type4host()
252 static unsigned int len4host(struct kbuffer *kbuf, in len4host() argument
255 if (kbuf->flags & KBUFFER_FL_BIG_ENDIAN) in len4host()
261 static unsigned int type_len4host(struct kbuffer *kbuf, in type_len4host() argument
264 if (kbuf->flags & KBUFFER_FL_BIG_ENDIAN) in type_len4host()
270 static unsigned int ts4host(struct kbuffer *kbuf, in ts4host() argument
273 if (kbuf->flags & KBUFFER_FL_BIG_ENDIAN) in ts4host()
290 static unsigned int old_update_pointers(struct kbuffer *kbuf) in old_update_pointers() argument
298 void *ptr = kbuf->data + kbuf->curr; in old_update_pointers()
300 type_len_ts = read_4(kbuf, ptr); in old_update_pointers()
303 type = type4host(kbuf, type_len_ts); in old_update_pointers()
304 len = len4host(kbuf, type_len_ts); in old_update_pointers()
305 delta = ts4host(kbuf, type_len_ts); in old_update_pointers()
309 kbuf->next = kbuf->size; in old_update_pointers()
313 extend = read_4(kbuf, ptr); in old_update_pointers()
322 kbuf->curr = kbuf->size; in old_update_pointers()
323 kbuf->next = kbuf->size; in old_update_pointers()
324 kbuf->index = kbuf->size; in old_update_pointers()
330 length = read_4(kbuf, ptr); in old_update_pointers()
337 kbuf->timestamp += delta; in old_update_pointers()
338 kbuf->index = calc_index(kbuf, ptr); in old_update_pointers()
339 kbuf->next = kbuf->index + length; in old_update_pointers()
344 static int __old_next_event(struct kbuffer *kbuf) in __old_next_event() argument
349 kbuf->curr = kbuf->next; in __old_next_event()
350 if (kbuf->next >= kbuf->size) in __old_next_event()
352 type = old_update_pointers(kbuf); in __old_next_event()
359 translate_data(struct kbuffer *kbuf, void *data, void **rptr, in translate_data() argument
366 type_len_ts = read_4(kbuf, data); in translate_data()
369 type_len = type_len4host(kbuf, type_len_ts); in translate_data()
370 *delta = ts4host(kbuf, type_len_ts); in translate_data()
374 *length = read_4(kbuf, data); in translate_data()
378 extend = read_4(kbuf, data); in translate_data()
391 *length = read_4(kbuf, data) - 4; in translate_data()
405 static unsigned int update_pointers(struct kbuffer *kbuf) in update_pointers() argument
410 void *ptr = kbuf->data + kbuf->curr; in update_pointers()
412 type_len = translate_data(kbuf, ptr, &ptr, &delta, &length); in update_pointers()
414 kbuf->timestamp += delta; in update_pointers()
415 kbuf->index = calc_index(kbuf, ptr); in update_pointers()
416 kbuf->next = kbuf->index + length; in update_pointers()
434 struct kbuffer kbuf; in kbuffer_translate_data() local
440 kbuf.read_8 = __read_8_sw; in kbuffer_translate_data()
441 kbuf.read_4 = __read_4_sw; in kbuffer_translate_data()
442 kbuf.flags = host_is_bigendian() ? 0 : KBUFFER_FL_BIG_ENDIAN; in kbuffer_translate_data()
444 kbuf.read_8 = __read_8; in kbuffer_translate_data()
445 kbuf.read_4 = __read_4; in kbuffer_translate_data()
446 kbuf.flags = host_is_bigendian() ? KBUFFER_FL_BIG_ENDIAN: 0; in kbuffer_translate_data()
449 type_len = translate_data(&kbuf, data, &ptr, &delta, &length); in kbuffer_translate_data()
462 static int __next_event(struct kbuffer *kbuf) in __next_event() argument
467 kbuf->curr = kbuf->next; in __next_event()
468 if (kbuf->next >= kbuf->size) in __next_event()
470 type = update_pointers(kbuf); in __next_event()
476 static int next_event(struct kbuffer *kbuf) in next_event() argument
478 return kbuf->next_event(kbuf); in next_event()
493 void *kbuffer_next_event(struct kbuffer *kbuf, unsigned long long *ts) in kbuffer_next_event() argument
497 if (!kbuf || !kbuf->subbuffer) in kbuffer_next_event()
500 ret = next_event(kbuf); in kbuffer_next_event()
505 *ts = kbuf->timestamp; in kbuffer_next_event()
507 return kbuf->data + kbuf->index; in kbuffer_next_event()
521 int kbuffer_load_subbuffer(struct kbuffer *kbuf, void *subbuffer) in kbuffer_load_subbuffer() argument
526 if (!kbuf || !subbuffer) in kbuffer_load_subbuffer()
529 kbuf->subbuffer = subbuffer; in kbuffer_load_subbuffer()
531 kbuf->timestamp = read_8(kbuf, ptr); in kbuffer_load_subbuffer()
534 kbuf->curr = 0; in kbuffer_load_subbuffer()
536 if (kbuf->flags & KBUFFER_FL_LONG_8) in kbuffer_load_subbuffer()
537 kbuf->start = 16; in kbuffer_load_subbuffer()
539 kbuf->start = 12; in kbuffer_load_subbuffer()
541 kbuf->data = subbuffer + kbuf->start; in kbuffer_load_subbuffer()
543 flags = read_long(kbuf, ptr); in kbuffer_load_subbuffer()
544 kbuf->size = (unsigned int)flags & COMMIT_MASK; in kbuffer_load_subbuffer()
548 ptr = kbuf->data + kbuf->size; in kbuffer_load_subbuffer()
549 kbuf->lost_events = read_long(kbuf, ptr); in kbuffer_load_subbuffer()
551 kbuf->lost_events = -1; in kbuffer_load_subbuffer()
553 kbuf->lost_events = 0; in kbuffer_load_subbuffer()
555 kbuf->index = 0; in kbuffer_load_subbuffer()
556 kbuf->next = 0; in kbuffer_load_subbuffer()
558 next_event(kbuf); in kbuffer_load_subbuffer()
571 void *kbuffer_read_event(struct kbuffer *kbuf, unsigned long long *ts) in kbuffer_read_event() argument
573 if (!kbuf || !kbuf->subbuffer) in kbuffer_read_event()
576 if (kbuf->curr >= kbuf->size) in kbuffer_read_event()
580 *ts = kbuf->timestamp; in kbuffer_read_event()
581 return kbuf->data + kbuf->index; in kbuffer_read_event()
590 unsigned long long kbuffer_timestamp(struct kbuffer *kbuf) in kbuffer_timestamp() argument
592 return kbuf->timestamp; in kbuffer_timestamp()
613 void *kbuffer_read_at_offset(struct kbuffer *kbuf, int offset, in kbuffer_read_at_offset() argument
618 if (offset < kbuf->start) in kbuffer_read_at_offset()
621 offset -= kbuf->start; in kbuffer_read_at_offset()
624 kbuffer_load_subbuffer(kbuf, kbuf->subbuffer); in kbuffer_read_at_offset()
626 while (kbuf->curr < offset) { in kbuffer_read_at_offset()
627 data = kbuffer_next_event(kbuf, ts); in kbuffer_read_at_offset()
643 int kbuffer_subbuffer_size(struct kbuffer *kbuf) in kbuffer_subbuffer_size() argument
645 return kbuf->size; in kbuffer_subbuffer_size()
658 int kbuffer_curr_index(struct kbuffer *kbuf) in kbuffer_curr_index() argument
660 return kbuf->curr; in kbuffer_curr_index()
670 int kbuffer_curr_offset(struct kbuffer *kbuf) in kbuffer_curr_offset() argument
672 return kbuf->curr + kbuf->start; in kbuffer_curr_offset()
682 int kbuffer_event_size(struct kbuffer *kbuf) in kbuffer_event_size() argument
684 return kbuf->next - kbuf->index; in kbuffer_event_size()
694 int kbuffer_curr_size(struct kbuffer *kbuf) in kbuffer_curr_size() argument
696 return kbuf->next - kbuf->curr; in kbuffer_curr_size()
708 int kbuffer_missed_events(struct kbuffer *kbuf) in kbuffer_missed_events() argument
711 if (kbuf->curr) in kbuffer_missed_events()
714 return kbuf->lost_events; in kbuffer_missed_events()
726 void kbuffer_set_old_format(struct kbuffer *kbuf) in kbuffer_set_old_format() argument
728 kbuf->flags |= KBUFFER_FL_OLD_FORMAT; in kbuffer_set_old_format()
730 kbuf->next_event = __old_next_event; in kbuffer_set_old_format()
739 int kbuffer_start_of_data(struct kbuffer *kbuf) in kbuffer_start_of_data() argument
741 return kbuf->start; in kbuffer_start_of_data()