syscall: move sync_child_event up a bit
The function was between two perf functions when perf functions don't use it... It seemed simpler to move the function than to add an extra ifdef Use that occasion to fix style warnings, no actual code changes were made. Change-Id: Ie8b5fa7968a3d5e54a690d079874db54f5e6c8c9
This commit is contained in:
committed by
Dominique Martinet
parent
b93e14f695
commit
20368dd317
@ -120,7 +120,6 @@ extern void free_all_process_memory_range(struct process_vm *vm);
|
||||
extern int arch_clear_host_user_space();
|
||||
extern long arch_ptrace(long request, int pid, long addr, long data);
|
||||
extern struct cpu_local_var *clv;
|
||||
extern void sync_child_event(struct mc_perf_event *event);
|
||||
|
||||
int prepare_process_ranges_args_envs(struct thread *thread,
|
||||
struct program_load_desc *pn,
|
||||
@ -958,6 +957,38 @@ void terminate_mcexec(int rc, int sig)
|
||||
}
|
||||
}
|
||||
|
||||
void sync_child_event(struct mc_perf_event *event)
|
||||
{
|
||||
struct mc_perf_event *leader;
|
||||
struct mc_perf_event *sub;
|
||||
|
||||
if (!event)
|
||||
return;
|
||||
if (!(event->attr.inherit) && (event->pid == 0))
|
||||
return;
|
||||
|
||||
leader = event->group_leader;
|
||||
if (leader->pid == 0) {
|
||||
leader->child_count_total +=
|
||||
ihk_mc_perfctr_read(leader->counter_id);
|
||||
}
|
||||
else if (leader->pid > 0) {
|
||||
leader->count = ihk_mc_perfctr_read(leader->counter_id);
|
||||
}
|
||||
else
|
||||
return; // Error
|
||||
|
||||
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
|
||||
if (event->pid == 0) {
|
||||
sub->child_count_total +=
|
||||
ihk_mc_perfctr_read(sub->counter_id);
|
||||
}
|
||||
else if (event->pid > 0) {
|
||||
sub->count = ihk_mc_perfctr_read(sub->counter_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void terminate(int rc, int sig)
|
||||
{
|
||||
struct resource_set *resource_set = cpu_local_var(resource_set);
|
||||
@ -3462,36 +3493,6 @@ unsigned long perf_event_read_value(struct mc_perf_event *event)
|
||||
return rtn_count;
|
||||
}
|
||||
|
||||
void sync_child_event(struct mc_perf_event *event)
|
||||
{
|
||||
struct mc_perf_event *leader;
|
||||
struct mc_perf_event *sub;
|
||||
|
||||
if(!event)
|
||||
return;
|
||||
if(!(event->attr.inherit) && (event->pid == 0))
|
||||
return;
|
||||
|
||||
leader = event->group_leader;
|
||||
if(leader->pid == 0){
|
||||
leader->child_count_total += ihk_mc_perfctr_read(leader->counter_id);
|
||||
}
|
||||
else if(leader->pid > 0) {
|
||||
leader->count = ihk_mc_perfctr_read(leader->counter_id);
|
||||
}
|
||||
else
|
||||
return; // Error
|
||||
|
||||
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
|
||||
if(event->pid == 0){
|
||||
sub->child_count_total += ihk_mc_perfctr_read(sub->counter_id);
|
||||
}
|
||||
else if(event->pid > 0) {
|
||||
sub->count = ihk_mc_perfctr_read(sub->counter_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
perf_event_read_group(struct mc_perf_event *event, unsigned long read_format, char *buf)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user