Lines Matching refs:cpu

288 	int			cpu;
295 static void update_cpu_data_index(int cpu)
297 cpu_data[cpu].offset += page_size;
298 cpu_data[cpu].size -= page_size;
299 cpu_data[cpu].index = 0;
302 static void get_next_page(int cpu)
307 if (!cpu_data[cpu].page)
311 if (cpu_data[cpu].size <= page_size) {
312 free(cpu_data[cpu].page);
313 cpu_data[cpu].page = NULL;
317 update_cpu_data_index(cpu);
322 ret = lseek(input_fd, cpu_data[cpu].offset, SEEK_SET);
325 ret = read(input_fd, cpu_data[cpu].page, page_size);
335 munmap(cpu_data[cpu].page, page_size);
336 cpu_data[cpu].page = NULL;
338 if (cpu_data[cpu].size <= page_size)
341 update_cpu_data_index(cpu);
343 cpu_data[cpu].page = mmap(NULL, page_size, PROT_READ, MAP_PRIVATE,
344 input_fd, cpu_data[cpu].offset);
345 if (cpu_data[cpu].page == MAP_FAILED)
346 die("failed to mmap cpu %d at offset 0x%llx",
347 cpu, cpu_data[cpu].offset);
366 static int calc_index(void *ptr, int cpu)
368 return (unsigned long)ptr - (unsigned long)cpu_data[cpu].page;
371 struct record *trace_peek_data(int cpu)
374 void *page = cpu_data[cpu].page;
375 int idx = cpu_data[cpu].index;
383 if (cpu_data[cpu].next)
384 return cpu_data[cpu].next;
393 cpu_data[cpu].timestamp = data2host8(ptr);
397 cpu_data[cpu].page_size = data2host4(ptr);
401 cpu_data[cpu].page_size = data2host8(ptr);
407 ptr = cpu_data[cpu].page + header_page_data_offset;
411 idx = calc_index(ptr, cpu);
413 if (idx >= cpu_data[cpu].page_size) {
414 get_next_page(cpu);
415 return trace_peek_data(cpu);
439 cpu_data[cpu].timestamp += extend;
455 cpu_data[cpu].timestamp += delta;
460 data->ts = cpu_data[cpu].timestamp;
465 cpu_data[cpu].index = calc_index(ptr, cpu);
466 cpu_data[cpu].next = data;
471 struct record *trace_read_data(int cpu)
475 data = trace_peek_data(cpu);
476 cpu_data[cpu].next = NULL;