Lines Matching refs:buf
69 struct bts_phys buf[0]; member
90 struct bts_buffer *buf; in bts_buffer_setup_aux() local
110 buf = kzalloc_node(offsetof(struct bts_buffer, buf[nbuf]), GFP_KERNEL, node); in bts_buffer_setup_aux()
111 if (!buf) in bts_buffer_setup_aux()
114 buf->nr_pages = nr_pages; in bts_buffer_setup_aux()
115 buf->nr_bufs = nbuf; in bts_buffer_setup_aux()
116 buf->snapshot = overwrite; in bts_buffer_setup_aux()
117 buf->data_pages = pages; in bts_buffer_setup_aux()
118 buf->real_size = size - size % BTS_RECORD_SIZE; in bts_buffer_setup_aux()
120 for (pg = 0, nbuf = 0, offset = 0, pad = 0; nbuf < buf->nr_bufs; nbuf++) { in bts_buffer_setup_aux()
125 buf->buf[nbuf].page = page; in bts_buffer_setup_aux()
126 buf->buf[nbuf].offset = offset; in bts_buffer_setup_aux()
127 buf->buf[nbuf].displacement = (pad ? BTS_RECORD_SIZE - pad : 0); in bts_buffer_setup_aux()
128 buf->buf[nbuf].size = buf_size(page) - buf->buf[nbuf].displacement; in bts_buffer_setup_aux()
129 pad = buf->buf[nbuf].size % BTS_RECORD_SIZE; in bts_buffer_setup_aux()
130 buf->buf[nbuf].size -= pad; in bts_buffer_setup_aux()
136 return buf; in bts_buffer_setup_aux()
144 static unsigned long bts_buffer_offset(struct bts_buffer *buf, unsigned int idx) in bts_buffer_offset() argument
146 return buf->buf[idx].offset + buf->buf[idx].displacement; in bts_buffer_offset()
150 bts_config_buffer(struct bts_buffer *buf) in bts_config_buffer() argument
154 struct bts_phys *phys = &buf->buf[buf->cur_buf]; in bts_config_buffer()
158 index = local_read(&buf->head); in bts_config_buffer()
160 if (!buf->snapshot) { in bts_config_buffer()
161 if (buf->end < phys->offset + buf_size(page)) in bts_config_buffer()
162 end = buf->end - phys->offset - phys->displacement; in bts_config_buffer()
177 ds->bts_interrupt_threshold = !buf->snapshot in bts_config_buffer()
193 struct bts_buffer *buf = perf_get_aux(&bts->handle); in bts_update() local
196 if (!buf) in bts_update()
199 head = index + bts_buffer_offset(buf, buf->cur_buf); in bts_update()
200 old = local_xchg(&buf->head, head); in bts_update()
202 if (!buf->snapshot) { in bts_update()
214 local_add(head - old, &buf->data_size); in bts_update()
216 local_set(&buf->data_size, head); in bts_update()
221 bts_buffer_reset(struct bts_buffer *buf, struct perf_output_handle *handle);
235 struct bts_buffer *buf = perf_get_aux(&bts->handle); in __bts_event_start() local
238 if (!buf->snapshot) in __bts_event_start()
245 bts_config_buffer(buf); in __bts_event_start()
264 struct bts_buffer *buf; in bts_event_start() local
266 buf = perf_aux_output_begin(&bts->handle, event); in bts_event_start()
267 if (!buf) in bts_event_start()
270 if (bts_buffer_reset(buf, &bts->handle)) in bts_event_start()
309 struct bts_buffer *buf = NULL; in bts_event_stop() local
316 buf = perf_get_aux(&bts->handle); in bts_event_stop()
323 if (buf) { in bts_event_stop()
324 if (buf->snapshot) in bts_event_stop()
326 local_xchg(&buf->data_size, in bts_event_stop()
327 buf->nr_pages << PAGE_SHIFT); in bts_event_stop()
329 local_xchg(&buf->data_size, 0)); in bts_event_stop()
375 bts_buffer_reset(struct bts_buffer *buf, struct perf_output_handle *handle) in bts_buffer_reset() argument
382 if (buf->snapshot) in bts_buffer_reset()
385 head = handle->head & ((buf->nr_pages << PAGE_SHIFT) - 1); in bts_buffer_reset()
387 phys = &buf->buf[buf->cur_buf]; in bts_buffer_reset()
396 next_buf = buf->cur_buf + 1; in bts_buffer_reset()
397 if (next_buf >= buf->nr_bufs) in bts_buffer_reset()
399 next_phys = &buf->buf[next_buf]; in bts_buffer_reset()
424 buf->cur_buf = next_buf; in bts_buffer_reset()
425 local_set(&buf->head, head); in bts_buffer_reset()
438 buf->end = head + space; in bts_buffer_reset()
455 struct bts_buffer *buf; in intel_bts_interrupt() local
473 buf = perf_get_aux(&bts->handle); in intel_bts_interrupt()
474 if (!buf) in intel_bts_interrupt()
482 if (buf->snapshot) in intel_bts_interrupt()
485 old_head = local_read(&buf->head); in intel_bts_interrupt()
489 if (old_head == local_read(&buf->head)) in intel_bts_interrupt()
492 perf_aux_output_end(&bts->handle, local_xchg(&buf->data_size, 0)); in intel_bts_interrupt()
494 buf = perf_aux_output_begin(&bts->handle, event); in intel_bts_interrupt()
495 if (buf) in intel_bts_interrupt()
496 err = bts_buffer_reset(buf, &bts->handle); in intel_bts_interrupt()
501 if (buf) { in intel_bts_interrupt()