Lines Matching full:sf

183 	struct s390_cpumsf	*sf;  member
196 static int s390_cpumcf_dumpctr(struct s390_cpumsf *sf, in s390_cpumcf_dumpctr() argument
203 if (!sf->use_logfile || sf->queues.nr_queues <= sample->cpu) in s390_cpumcf_dumpctr()
206 q = &sf->queues.queue_array[sample->cpu]; in s390_cpumcf_dumpctr()
214 rc = (sf->logdir) in s390_cpumcf_dumpctr()
216 sf->logdir, sample->cpu) in s390_cpumcf_dumpctr()
433 static void s390_cpumsf_dump(struct s390_cpumsf *sf, in s390_cpumsf_dump() argument
446 if (!s390_cpumsf_validate(sf->machine_type, buf, len, &bsdes, in s390_cpumsf_dump()
450 len, sf->machine_type, bsdes, dsdes); in s390_cpumsf_dump()
494 static void s390_cpumsf_dump_event(struct s390_cpumsf *sf, unsigned char *buf, in s390_cpumsf_dump_event() argument
498 s390_cpumsf_dump(sf, buf, len); in s390_cpumsf_dump_event()
540 ret = perf_session__deliver_synth_event(sfq->sf->session, &event, &sample); in s390_cpumsf_make_event()
604 struct s390_cpumsf *sf = sfq->sf; in s390_cpumsf_samples() local
613 if (!s390_cpumsf_validate(sf->machine_type, buf, len, &bsdes, in s390_cpumsf_samples()
703 queue = &sfq->sf->queues.queue_array[sfq->queue_nr]; in s390_cpumsf_run_decoder()
733 int fd = perf_data__fd(sfq->sf->session->data); in s390_cpumsf_run_decoder()
770 s390_cpumsf_alloc_queue(struct s390_cpumsf *sf, unsigned int queue_nr) in s390_cpumsf_alloc_queue() argument
778 sfq->sf = sf; in s390_cpumsf_alloc_queue()
781 if (sf->use_logfile) { in s390_cpumsf_alloc_queue()
785 rc = (sf->logdir) in s390_cpumsf_alloc_queue()
787 sf->logdir, queue_nr) in s390_cpumsf_alloc_queue()
794 sf->use_logfile = false; in s390_cpumsf_alloc_queue()
801 static int s390_cpumsf_setup_queue(struct s390_cpumsf *sf, in s390_cpumsf_setup_queue() argument
811 sfq = s390_cpumsf_alloc_queue(sf, queue_nr); in s390_cpumsf_setup_queue()
819 return auxtrace_heap__add(&sf->heap, queue_nr, ts); in s390_cpumsf_setup_queue()
822 static int s390_cpumsf_setup_queues(struct s390_cpumsf *sf, u64 ts) in s390_cpumsf_setup_queues() argument
827 for (i = 0; i < sf->queues.nr_queues; i++) { in s390_cpumsf_setup_queues()
828 ret = s390_cpumsf_setup_queue(sf, &sf->queues.queue_array[i], in s390_cpumsf_setup_queues()
836 static int s390_cpumsf_update_queues(struct s390_cpumsf *sf, u64 ts) in s390_cpumsf_update_queues() argument
838 if (!sf->queues.new_data) in s390_cpumsf_update_queues()
841 sf->queues.new_data = false; in s390_cpumsf_update_queues()
842 return s390_cpumsf_setup_queues(sf, ts); in s390_cpumsf_update_queues()
845 static int s390_cpumsf_process_queues(struct s390_cpumsf *sf, u64 timestamp) in s390_cpumsf_process_queues() argument
855 if (!sf->heap.heap_cnt) in s390_cpumsf_process_queues()
858 if (sf->heap.heap_array[0].ordinal >= timestamp) in s390_cpumsf_process_queues()
861 queue_nr = sf->heap.heap_array[0].queue_nr; in s390_cpumsf_process_queues()
862 queue = &sf->queues.queue_array[queue_nr]; in s390_cpumsf_process_queues()
865 auxtrace_heap__pop(&sf->heap); in s390_cpumsf_process_queues()
866 if (sf->heap.heap_cnt) { in s390_cpumsf_process_queues()
867 ts = sf->heap.heap_array[0].ordinal + 1; in s390_cpumsf_process_queues()
876 auxtrace_heap__add(&sf->heap, queue_nr, ts); in s390_cpumsf_process_queues()
880 ret = auxtrace_heap__add(&sf->heap, queue_nr, ts); in s390_cpumsf_process_queues()
888 static int s390_cpumsf_synth_error(struct s390_cpumsf *sf, int code, int cpu, in s390_cpumsf_synth_error() argument
899 err = perf_session__deliver_synth_event(sf->session, &event, NULL); in s390_cpumsf_synth_error()
906 static int s390_cpumsf_lost(struct s390_cpumsf *sf, struct perf_sample *sample) in s390_cpumsf_lost() argument
908 return s390_cpumsf_synth_error(sf, 1, sample->cpu, in s390_cpumsf_lost()
919 struct s390_cpumsf *sf = container_of(session->auxtrace, in s390_cpumsf_process_event() local
941 err = s390_cpumcf_dumpctr(sf, sample); in s390_cpumsf_process_event()
947 return s390_cpumsf_lost(sf, sample); in s390_cpumsf_process_event()
950 err = s390_cpumsf_update_queues(sf, timestamp); in s390_cpumsf_process_event()
952 err = s390_cpumsf_process_queues(sf, timestamp); in s390_cpumsf_process_event()
962 struct s390_cpumsf *sf = container_of(session->auxtrace, in s390_cpumsf_process_auxtrace_event() local
971 if (sf->data_queued) in s390_cpumsf_process_auxtrace_event()
982 err = auxtrace_queues__add_event(&sf->queues, session, event, in s390_cpumsf_process_auxtrace_event()
990 s390_cpumsf_dump_event(sf, buffer->data, in s390_cpumsf_process_auxtrace_event()
1010 struct s390_cpumsf *sf = container_of(session->auxtrace, in s390_cpumsf_free_queues() local
1013 struct auxtrace_queues *queues = &sf->queues; in s390_cpumsf_free_queues()
1037 struct s390_cpumsf *sf = container_of(session->auxtrace, in s390_cpumsf_free() local
1041 auxtrace_heap__free(&sf->heap); in s390_cpumsf_free()
1044 zfree(&sf->logdir); in s390_cpumsf_free()
1045 free(sf); in s390_cpumsf_free()
1094 struct s390_cpumsf *sf = cb; in s390_cpumsf__config() local
1100 sf->logdir = strdup(value); in s390_cpumsf__config()
1101 if (sf->logdir == NULL) { in s390_cpumsf__config()
1106 rc = stat(sf->logdir, &stbuf); in s390_cpumsf__config()
1110 zfree(&sf->logdir); in s390_cpumsf__config()
1119 struct s390_cpumsf *sf; in s390_cpumsf_process_auxtrace_info() local
1125 sf = zalloc(sizeof(struct s390_cpumsf)); in s390_cpumsf_process_auxtrace_info()
1126 if (sf == NULL) in s390_cpumsf_process_auxtrace_info()
1133 sf->use_logfile = session->itrace_synth_opts->log; in s390_cpumsf_process_auxtrace_info()
1134 if (sf->use_logfile) in s390_cpumsf_process_auxtrace_info()
1135 perf_config(s390_cpumsf__config, sf); in s390_cpumsf_process_auxtrace_info()
1137 err = auxtrace_queues__init(&sf->queues); in s390_cpumsf_process_auxtrace_info()
1141 sf->session = session; in s390_cpumsf_process_auxtrace_info()
1142 sf->machine = &session->machines.host; /* No kvm support */ in s390_cpumsf_process_auxtrace_info()
1143 sf->auxtrace_type = auxtrace_info->type; in s390_cpumsf_process_auxtrace_info()
1144 sf->pmu_type = PERF_TYPE_RAW; in s390_cpumsf_process_auxtrace_info()
1145 sf->machine_type = s390_cpumsf_get_type(perf_session__env(session)->cpuid); in s390_cpumsf_process_auxtrace_info()
1147 sf->auxtrace.process_event = s390_cpumsf_process_event; in s390_cpumsf_process_auxtrace_info()
1148 sf->auxtrace.process_auxtrace_event = s390_cpumsf_process_auxtrace_event; in s390_cpumsf_process_auxtrace_info()
1149 sf->auxtrace.flush_events = s390_cpumsf_flush; in s390_cpumsf_process_auxtrace_info()
1150 sf->auxtrace.free_events = s390_cpumsf_free_events; in s390_cpumsf_process_auxtrace_info()
1151 sf->auxtrace.free = s390_cpumsf_free; in s390_cpumsf_process_auxtrace_info()
1152 sf->auxtrace.evsel_is_auxtrace = s390_cpumsf_evsel_is_auxtrace; in s390_cpumsf_process_auxtrace_info()
1153 session->auxtrace = &sf->auxtrace; in s390_cpumsf_process_auxtrace_info()
1158 err = auxtrace_queues__process_index(&sf->queues, session); in s390_cpumsf_process_auxtrace_info()
1162 if (sf->queues.populated) in s390_cpumsf_process_auxtrace_info()
1163 sf->data_queued = true; in s390_cpumsf_process_auxtrace_info()
1168 auxtrace_queues__free(&sf->queues); in s390_cpumsf_process_auxtrace_info()
1171 zfree(&sf->logdir); in s390_cpumsf_process_auxtrace_info()
1172 free(sf); in s390_cpumsf_process_auxtrace_info()