Lines Matching refs:buffer
289 struct auxtrace_buffer *buffer)
304 queue->tid = buffer->tid;
305 queue->cpu = buffer->cpu.cpu;
308 buffer->buffer_nr = queues->next_buffer_nr++;
310 list_add_tail(&buffer->list, &queue->head);
323 struct auxtrace_buffer *buffer)
325 u64 sz = buffer->size;
331 b = memdup(buffer, sizeof(struct auxtrace_buffer));
341 buffer->data_offset += BUFFER_LIMIT_FOR_32_BIT;
346 buffer->size = sz;
347 buffer->consecutive = consecutive;
362 struct auxtrace_buffer *buffer,
367 if (filter_cpu(session, buffer->cpu))
370 buffer = memdup(buffer, sizeof(*buffer));
371 if (!buffer)
375 buffer->data = buffer->data_offset - session->one_mmap_offset +
378 buffer->data = auxtrace_copy_data(buffer->size, session);
379 if (!buffer->data)
381 buffer->data_needs_freeing = true;
383 buffer->size > BUFFER_LIMIT_FOR_32_BIT) {
384 err = auxtrace_queues__split_buffer(queues, idx, buffer);
389 err = auxtrace_queues__queue_buffer(queues, idx, buffer);
393 /* FIXME: Doesn't work for split buffer */
395 *buffer_ptr = buffer;
400 auxtrace_buffer__free(buffer);
409 struct auxtrace_buffer buffer = {
420 return auxtrace_queues__add_buffer(queues, session, idx, &buffer,
457 struct auxtrace_buffer *buffer;
459 buffer = list_entry(queues->queue_array[i].head.next,
461 list_del_init(&buffer->list);
462 auxtrace_buffer__free(buffer);
1022 struct auxtrace_buffer *buffer)
1024 if (buffer) {
1025 if (list_is_last(&buffer->list, &queue->head))
1027 return list_entry(buffer->list.next, struct auxtrace_buffer,
1066 struct auxtrace_buffer buffer = {
1084 buffer.tid = sid->tid;
1085 buffer.cpu = sid->cpu;
1087 return auxtrace_queues__add_buffer(queues, session, idx, &buffer, NULL);
1147 void *auxtrace_buffer__get_data_rw(struct auxtrace_buffer *buffer, int fd, bool rw)
1150 size_t adj = buffer->data_offset & (page_size - 1);
1151 size_t size = buffer->size + adj;
1152 off_t file_offset = buffer->data_offset - adj;
1155 if (buffer->data)
1156 return buffer->data;
1162 buffer->mmap_addr = addr;
1163 buffer->mmap_size = size;
1165 buffer->data = addr + adj;
1167 return buffer->data;
1170 void auxtrace_buffer__put_data(struct auxtrace_buffer *buffer)
1172 if (!buffer->data || !buffer->mmap_addr)
1174 munmap(buffer->mmap_addr, buffer->mmap_size);
1175 buffer->mmap_addr = NULL;
1176 buffer->mmap_size = 0;
1177 buffer->data = NULL;
1178 buffer->use_data = NULL;
1181 void auxtrace_buffer__drop_data(struct auxtrace_buffer *buffer)
1183 auxtrace_buffer__put_data(buffer);
1184 if (buffer->data_needs_freeing) {
1185 buffer->data_needs_freeing = false;
1186 zfree(&buffer->data);
1187 buffer->use_data = NULL;
1188 buffer->size = 0;
1192 void auxtrace_buffer__free(struct auxtrace_buffer *buffer)
1194 auxtrace_buffer__drop_data(buffer);
1195 free(buffer);
1453 perf_config_scan("itrace.debug-log-buffer-size", "%u", &sz);
1770 * can not simply limit the AUX ring buffer to less than 4GB, the reason is
1771 * the pointers can be increased monotonically, whatever the buffer size it is,
1869 * When the buffer size is not a power of 2, 'head' wraps at the
1870 * highest multiple of the buffer size, so we have to subtract