Lines Matching refs:data

137 static ssize_t synthesize_attr(struct bench_data *data)  in synthesize_attr()  argument
152 return writen(data->input_pipe[1], &event, event.header.size); in synthesize_attr()
155 static ssize_t synthesize_fork(struct bench_data *data) in synthesize_fork() argument
167 event.fork.pid = data->pid; in synthesize_fork()
168 event.fork.tid = data->pid; in synthesize_fork()
170 return writen(data->input_pipe[1], &event, event.header.size); in synthesize_fork()
173 static ssize_t synthesize_mmap(struct bench_data *data, struct bench_dso *dso, u64 timestamp) in synthesize_mmap() argument
188 event.mmap2.pid = data->pid; in synthesize_mmap()
189 event.mmap2.tid = data->pid; in synthesize_mmap()
201 if (writen(data->input_pipe[1], &event, len - bench_id_hdr_size) < 0) in synthesize_mmap()
208 if (writen(data->input_pipe[1], id_hdr_ptr, bench_id_hdr_size) < 0) in synthesize_mmap()
216 return writen(data->input_pipe[1], &event, len); in synthesize_mmap()
219 static ssize_t synthesize_sample(struct bench_data *data, struct bench_dso *dso, u64 timestamp) in synthesize_sample() argument
223 .tid = data->pid, in synthesize_sample()
224 .pid = data->pid, in synthesize_sample()
235 return writen(data->input_pipe[1], &event, event.header.size); in synthesize_sample()
238 static ssize_t synthesize_flush(struct bench_data *data) in synthesize_flush() argument
245 return writen(data->input_pipe[1], &header, header.size); in synthesize_flush()
250 struct bench_data *data = arg; in data_reader() local
255 flag = fcntl(data->output_pipe[0], F_GETFL); in data_reader()
256 fcntl(data->output_pipe[0], F_SETFL, flag | O_NONBLOCK); in data_reader()
260 n = read(data->output_pipe[0], buf, sizeof(buf)); in data_reader()
272 close(data->output_pipe[0]); in data_reader()
276 static int setup_injection(struct bench_data *data, bool build_id_all) in setup_injection() argument
285 if (pipe(data->input_pipe) < 0) in setup_injection()
288 if (pipe(data->output_pipe) < 0) in setup_injection()
291 data->pid = fork(); in setup_injection()
292 if (data->pid < 0) in setup_injection()
295 if (data->pid == 0) { in setup_injection()
299 close(data->input_pipe[1]); in setup_injection()
300 close(data->output_pipe[0]); in setup_injection()
303 dup2(data->input_pipe[0], STDIN_FILENO); in setup_injection()
304 close(data->input_pipe[0]); in setup_injection()
305 dup2(data->output_pipe[1], STDOUT_FILENO); in setup_injection()
306 close(data->output_pipe[1]); in setup_injection()
335 pthread_create(&data->th, NULL, data_reader, data); in setup_injection()
338 close(data->input_pipe[0]); in setup_injection()
339 close(data->output_pipe[1]); in setup_injection()
349 static int inject_build_id(struct bench_data *data, u64 *max_rss) in inject_build_id() argument
356 if (perf_header__write_pipe(data->input_pipe[1]) < 0) in inject_build_id()
359 if (synthesize_attr(data) < 0) in inject_build_id()
362 if (synthesize_fork(data) < 0) in inject_build_id()
371 if (synthesize_mmap(data, dso, timestamp) < 0) in inject_build_id()
375 if (synthesize_sample(data, dso, timestamp + k * 1000) < 0) in inject_build_id()
380 if (synthesize_flush(data) < 0) in inject_build_id()
386 close(data->input_pipe[1]); in inject_build_id()
388 wait4(data->pid, &status, 0, &rusage); in inject_build_id()
391 pr_debug(" Child %d exited with %d\n", data->pid, status); in inject_build_id()
396 static void do_inject_loop(struct bench_data *data, bool build_id_all) in do_inject_loop() argument
414 if (setup_injection(data, build_id_all) < 0) { in do_inject_loop()
420 if (inject_build_id(data, &max_rss) < 0) { in do_inject_loop()
431 pthread_join(data->th, NULL); in do_inject_loop()
451 static int do_inject_loops(struct bench_data *data) in do_inject_loops() argument
467 do_inject_loop(data, false); in do_inject_loops()
468 do_inject_loop(data, true); in do_inject_loops()
476 struct bench_data data; in bench_inject_build_id() local
484 return do_inject_loops(&data); in bench_inject_build_id()