Lines Matching full:sf
183 struct s390_cpumsf *sf;
196 static int s390_cpumcf_dumpctr(struct s390_cpumsf *sf,
203 if (!sf->use_logfile || sf->queues.nr_queues <= sample->cpu)
206 q = &sf->queues.queue_array[sample->cpu];
214 rc = (sf->logdir)
216 sf->logdir, sample->cpu)
433 static void s390_cpumsf_dump(struct s390_cpumsf *sf,
446 if (!s390_cpumsf_validate(sf->machine_type, buf, len, &bsdes,
450 len, sf->machine_type, bsdes, dsdes);
494 static void s390_cpumsf_dump_event(struct s390_cpumsf *sf, unsigned char *buf,
498 s390_cpumsf_dump(sf, buf, len);
539 if (perf_session__deliver_synth_event(sfq->sf->session, &event,
602 struct s390_cpumsf *sf = sfq->sf;
611 if (!s390_cpumsf_validate(sf->machine_type, buf, len, &bsdes,
701 queue = &sfq->sf->queues.queue_array[sfq->queue_nr];
731 int fd = perf_data__fd(sfq->sf->session->data);
768 s390_cpumsf_alloc_queue(struct s390_cpumsf *sf, unsigned int queue_nr)
776 sfq->sf = sf;
779 if (sf->use_logfile) {
783 rc = (sf->logdir)
785 sf->logdir, queue_nr)
792 sf->use_logfile = false;
799 static int s390_cpumsf_setup_queue(struct s390_cpumsf *sf,
809 sfq = s390_cpumsf_alloc_queue(sf, queue_nr);
817 return auxtrace_heap__add(&sf->heap, queue_nr, ts);
820 static int s390_cpumsf_setup_queues(struct s390_cpumsf *sf, u64 ts)
825 for (i = 0; i < sf->queues.nr_queues; i++) {
826 ret = s390_cpumsf_setup_queue(sf, &sf->queues.queue_array[i],
834 static int s390_cpumsf_update_queues(struct s390_cpumsf *sf, u64 ts)
836 if (!sf->queues.new_data)
839 sf->queues.new_data = false;
840 return s390_cpumsf_setup_queues(sf, ts);
843 static int s390_cpumsf_process_queues(struct s390_cpumsf *sf, u64 timestamp)
853 if (!sf->heap.heap_cnt)
856 if (sf->heap.heap_array[0].ordinal >= timestamp)
859 queue_nr = sf->heap.heap_array[0].queue_nr;
860 queue = &sf->queues.queue_array[queue_nr];
863 auxtrace_heap__pop(&sf->heap);
864 if (sf->heap.heap_cnt) {
865 ts = sf->heap.heap_array[0].ordinal + 1;
874 auxtrace_heap__add(&sf->heap, queue_nr, ts);
878 ret = auxtrace_heap__add(&sf->heap, queue_nr, ts);
886 static int s390_cpumsf_synth_error(struct s390_cpumsf *sf, int code, int cpu,
897 err = perf_session__deliver_synth_event(sf->session, &event, NULL);
904 static int s390_cpumsf_lost(struct s390_cpumsf *sf, struct perf_sample *sample)
906 return s390_cpumsf_synth_error(sf, 1, sample->cpu,
917 struct s390_cpumsf *sf = container_of(session->auxtrace,
939 err = s390_cpumcf_dumpctr(sf, sample);
945 return s390_cpumsf_lost(sf, sample);
948 err = s390_cpumsf_update_queues(sf, timestamp);
950 err = s390_cpumsf_process_queues(sf, timestamp);
960 struct s390_cpumsf *sf = container_of(session->auxtrace,
969 if (sf->data_queued)
980 err = auxtrace_queues__add_event(&sf->queues, session, event,
988 s390_cpumsf_dump_event(sf, buffer->data,
1008 struct s390_cpumsf *sf = container_of(session->auxtrace,
1011 struct auxtrace_queues *queues = &sf->queues;
1035 struct s390_cpumsf *sf = container_of(session->auxtrace,
1039 auxtrace_heap__free(&sf->heap);
1042 zfree(&sf->logdir);
1043 free(sf);
1092 struct s390_cpumsf *sf = cb;
1098 sf->logdir = strdup(value);
1099 if (sf->logdir == NULL) {
1104 rc = stat(sf->logdir, &stbuf);
1108 zfree(&sf->logdir);
1117 struct s390_cpumsf *sf;
1123 sf = zalloc(sizeof(struct s390_cpumsf));
1124 if (sf == NULL)
1131 sf->use_logfile = session->itrace_synth_opts->log;
1132 if (sf->use_logfile)
1133 perf_config(s390_cpumsf__config, sf);
1135 err = auxtrace_queues__init(&sf->queues);
1139 sf->session = session;
1140 sf->machine = &session->machines.host; /* No kvm support */
1141 sf->auxtrace_type = auxtrace_info->type;
1142 sf->pmu_type = PERF_TYPE_RAW;
1143 sf->machine_type = s390_cpumsf_get_type(session->evlist->env->cpuid);
1145 sf->auxtrace.process_event = s390_cpumsf_process_event;
1146 sf->auxtrace.process_auxtrace_event = s390_cpumsf_process_auxtrace_event;
1147 sf->auxtrace.flush_events = s390_cpumsf_flush;
1148 sf->auxtrace.free_events = s390_cpumsf_free_events;
1149 sf->auxtrace.free = s390_cpumsf_free;
1150 sf->auxtrace.evsel_is_auxtrace = s390_cpumsf_evsel_is_auxtrace;
1151 session->auxtrace = &sf->auxtrace;
1156 err = auxtrace_queues__process_index(&sf->queues, session);
1160 if (sf->queues.populated)
1161 sf->data_queued = true;
1166 auxtrace_queues__free(&sf->queues);
1169 zfree(&sf->logdir);
1170 free(sf);