Lines Matching refs:context

24 char *osnoise_get_cpus(struct osnoise_context *context)
26 if (context->curr_cpus)
27 return context->curr_cpus;
29 if (context->orig_cpus)
30 return context->orig_cpus;
32 context->orig_cpus = tracefs_instance_file_read(NULL, "osnoise/cpus", NULL);
38 return context->orig_cpus;
48 int osnoise_set_cpus(struct osnoise_context *context, char *cpus)
50 char *orig_cpus = osnoise_get_cpus(context);
57 context->curr_cpus = strdup(cpus);
58 if (!context->curr_cpus)
63 debug_msg("setting cpus to %s from %s", cpus, context->orig_cpus);
67 free(context->curr_cpus);
68 context->curr_cpus = NULL;
82 void osnoise_restore_cpus(struct osnoise_context *context)
86 if (!context->orig_cpus)
89 if (!context->curr_cpus)
93 if (!strcmp(context->orig_cpus, context->curr_cpus))
96 debug_msg("restoring cpus to %s", context->orig_cpus);
98 retval = tracefs_instance_file_write(NULL, "osnoise/cpus", context->orig_cpus);
103 free(context->curr_cpus);
104 context->curr_cpus = NULL;
110 void osnoise_put_cpus(struct osnoise_context *context)
112 osnoise_restore_cpus(context);
114 if (!context->orig_cpus)
117 free(context->orig_cpus);
118 context->orig_cpus = NULL;
168 unsigned long long osnoise_get_runtime(struct osnoise_context *context)
172 if (context->runtime_us != OSNOISE_TIME_INIT_VAL)
173 return context->runtime_us;
175 if (context->orig_runtime_us != OSNOISE_TIME_INIT_VAL)
176 return context->orig_runtime_us;
182 context->orig_runtime_us = runtime_us;
194 unsigned long long osnoise_get_period(struct osnoise_context *context)
198 if (context->period_us != OSNOISE_TIME_INIT_VAL)
199 return context->period_us;
201 if (context->orig_period_us != OSNOISE_TIME_INIT_VAL)
202 return context->orig_period_us;
208 context->orig_period_us = period_us;
215 static int __osnoise_write_runtime(struct osnoise_context *context,
220 if (context->orig_runtime_us == OSNOISE_TIME_INIT_VAL)
227 context->runtime_us = runtime;
231 static int __osnoise_write_period(struct osnoise_context *context,
236 if (context->orig_period_us == OSNOISE_TIME_INIT_VAL)
243 context->period_us = period;
254 int osnoise_set_runtime_period(struct osnoise_context *context,
265 curr_runtime_us = osnoise_get_runtime(context);
266 curr_period_us = osnoise_get_period(context);
275 return __osnoise_write_runtime(context, runtime);
279 return __osnoise_write_period(context, period);
283 retval = __osnoise_write_period(context, period);
286 retval = __osnoise_write_runtime(context, runtime);
290 retval = __osnoise_write_runtime(context, runtime);
293 retval = __osnoise_write_period(context, period);
304 void osnoise_restore_runtime_period(struct osnoise_context *context)
306 unsigned long long orig_runtime = context->orig_runtime_us;
307 unsigned long long orig_period = context->orig_period_us;
308 unsigned long long curr_runtime = context->runtime_us;
309 unsigned long long curr_period = context->period_us;
318 retval = osnoise_set_runtime_period(context, orig_runtime, orig_period);
323 context->runtime_us = OSNOISE_TIME_INIT_VAL;
324 context->period_us = OSNOISE_TIME_INIT_VAL;
330 void osnoise_put_runtime_period(struct osnoise_context *context)
332 osnoise_restore_runtime_period(context);
334 if (context->orig_runtime_us != OSNOISE_TIME_INIT_VAL)
335 context->orig_runtime_us = OSNOISE_TIME_INIT_VAL;
337 if (context->orig_period_us != OSNOISE_TIME_INIT_VAL)
338 context->orig_period_us = OSNOISE_TIME_INIT_VAL;
345 osnoise_get_timerlat_period_us(struct osnoise_context *context)
349 if (context->timerlat_period_us != OSNOISE_TIME_INIT_VAL)
350 return context->timerlat_period_us;
352 if (context->orig_timerlat_period_us != OSNOISE_TIME_INIT_VAL)
353 return context->orig_timerlat_period_us;
359 context->orig_timerlat_period_us = timerlat_period_us;
369 int osnoise_set_timerlat_period_us(struct osnoise_context *context, long long timerlat_period_us)
371 long long curr_timerlat_period_us = osnoise_get_timerlat_period_us(context);
381 context->timerlat_period_us = timerlat_period_us;
389 void osnoise_restore_timerlat_period_us(struct osnoise_context *context)
393 if (context->orig_timerlat_period_us == OSNOISE_TIME_INIT_VAL)
396 if (context->orig_timerlat_period_us == context->timerlat_period_us)
399 retval = osnoise_write_ll_config("osnoise/timerlat_period_us", context->orig_timerlat_period_us);
404 context->timerlat_period_us = OSNOISE_TIME_INIT_VAL;
410 void osnoise_put_timerlat_period_us(struct osnoise_context *context)
412 osnoise_restore_timerlat_period_us(context);
414 if (context->orig_timerlat_period_us == OSNOISE_TIME_INIT_VAL)
417 context->orig_timerlat_period_us = OSNOISE_TIME_INIT_VAL;
424 osnoise_get_stop_us(struct osnoise_context *context)
428 if (context->stop_us != OSNOISE_OPTION_INIT_VAL)
429 return context->stop_us;
431 if (context->orig_stop_us != OSNOISE_OPTION_INIT_VAL)
432 return context->orig_stop_us;
438 context->orig_stop_us = stop_us;
448 int osnoise_set_stop_us(struct osnoise_context *context, long long stop_us)
450 long long curr_stop_us = osnoise_get_stop_us(context);
460 context->stop_us = stop_us;
468 void osnoise_restore_stop_us(struct osnoise_context *context)
472 if (context->orig_stop_us == OSNOISE_OPTION_INIT_VAL)
475 if (context->orig_stop_us == context->stop_us)
478 retval = osnoise_write_ll_config("osnoise/stop_tracing_us", context->orig_stop_us);
483 context->stop_us = OSNOISE_OPTION_INIT_VAL;
489 void osnoise_put_stop_us(struct osnoise_context *context)
491 osnoise_restore_stop_us(context);
493 if (context->orig_stop_us == OSNOISE_OPTION_INIT_VAL)
496 context->orig_stop_us = OSNOISE_OPTION_INIT_VAL;
503 osnoise_get_stop_total_us(struct osnoise_context *context)
507 if (context->stop_total_us != OSNOISE_OPTION_INIT_VAL)
508 return context->stop_total_us;
510 if (context->orig_stop_total_us != OSNOISE_OPTION_INIT_VAL)
511 return context->orig_stop_total_us;
517 context->orig_stop_total_us = stop_total_us;
527 int osnoise_set_stop_total_us(struct osnoise_context *context, long long stop_total_us)
529 long long curr_stop_total_us = osnoise_get_stop_total_us(context);
539 context->stop_total_us = stop_total_us;
547 void osnoise_restore_stop_total_us(struct osnoise_context *context)
551 if (context->orig_stop_total_us == OSNOISE_OPTION_INIT_VAL)
554 if (context->orig_stop_total_us == context->stop_total_us)
558 context->orig_stop_total_us);
563 context->stop_total_us = OSNOISE_OPTION_INIT_VAL;
569 void osnoise_put_stop_total_us(struct osnoise_context *context)
571 osnoise_restore_stop_total_us(context);
573 if (context->orig_stop_total_us == OSNOISE_OPTION_INIT_VAL)
576 context->orig_stop_total_us = OSNOISE_OPTION_INIT_VAL;
583 osnoise_get_print_stack(struct osnoise_context *context)
587 if (context->print_stack != OSNOISE_OPTION_INIT_VAL)
588 return context->print_stack;
590 if (context->orig_print_stack != OSNOISE_OPTION_INIT_VAL)
591 return context->orig_print_stack;
597 context->orig_print_stack = print_stack;
607 int osnoise_set_print_stack(struct osnoise_context *context, long long print_stack)
609 long long curr_print_stack = osnoise_get_print_stack(context);
619 context->print_stack = print_stack;
627 void osnoise_restore_print_stack(struct osnoise_context *context)
631 if (context->orig_print_stack == OSNOISE_OPTION_INIT_VAL)
634 if (context->orig_print_stack == context->print_stack)
637 retval = osnoise_write_ll_config("osnoise/print_stack", context->orig_print_stack);
642 context->print_stack = OSNOISE_OPTION_INIT_VAL;
648 void osnoise_put_print_stack(struct osnoise_context *context)
650 osnoise_restore_print_stack(context);
652 if (context->orig_print_stack == OSNOISE_OPTION_INIT_VAL)
655 context->orig_print_stack = OSNOISE_OPTION_INIT_VAL;
662 osnoise_get_tracing_thresh(struct osnoise_context *context)
666 if (context->tracing_thresh != OSNOISE_OPTION_INIT_VAL)
667 return context->tracing_thresh;
669 if (context->orig_tracing_thresh != OSNOISE_OPTION_INIT_VAL)
670 return context->orig_tracing_thresh;
676 context->orig_tracing_thresh = tracing_thresh;
686 int osnoise_set_tracing_thresh(struct osnoise_context *context, long long tracing_thresh)
688 long long curr_tracing_thresh = osnoise_get_tracing_thresh(context);
698 context->tracing_thresh = tracing_thresh;
706 void osnoise_restore_tracing_thresh(struct osnoise_context *context)
710 if (context->orig_tracing_thresh == OSNOISE_OPTION_INIT_VAL)
713 if (context->orig_tracing_thresh == context->tracing_thresh)
716 retval = osnoise_write_ll_config("tracing_thresh", context->orig_tracing_thresh);
721 context->tracing_thresh = OSNOISE_OPTION_INIT_VAL;
727 void osnoise_put_tracing_thresh(struct osnoise_context *context)
729 osnoise_restore_tracing_thresh(context);
731 if (context->orig_tracing_thresh == OSNOISE_OPTION_INIT_VAL)
734 context->orig_tracing_thresh = OSNOISE_OPTION_INIT_VAL;
783 static int osnoise_get_irq_disable(struct osnoise_context *context)
785 if (context->opt_irq_disable != OSNOISE_OPTION_INIT_VAL)
786 return context->opt_irq_disable;
788 if (context->orig_opt_irq_disable != OSNOISE_OPTION_INIT_VAL)
789 return context->orig_opt_irq_disable;
791 context->orig_opt_irq_disable = osnoise_options_get_option("OSNOISE_IRQ_DISABLE");
793 return context->orig_opt_irq_disable;
796 int osnoise_set_irq_disable(struct osnoise_context *context, bool onoff)
798 int opt_irq_disable = osnoise_get_irq_disable(context);
811 context->opt_irq_disable = onoff;
816 static void osnoise_restore_irq_disable(struct osnoise_context *context)
820 if (context->orig_opt_irq_disable == OSNOISE_OPTION_INIT_VAL)
823 if (context->orig_opt_irq_disable == context->opt_irq_disable)
826 retval = osnoise_options_set_option("OSNOISE_IRQ_DISABLE", context->orig_opt_irq_disable);
831 context->orig_opt_irq_disable = OSNOISE_OPTION_INIT_VAL;
834 static void osnoise_put_irq_disable(struct osnoise_context *context)
836 osnoise_restore_irq_disable(context);
838 if (context->orig_opt_irq_disable == OSNOISE_OPTION_INIT_VAL)
841 context->orig_opt_irq_disable = OSNOISE_OPTION_INIT_VAL;
844 static int osnoise_get_workload(struct osnoise_context *context)
846 if (context->opt_workload != OSNOISE_OPTION_INIT_VAL)
847 return context->opt_workload;
849 if (context->orig_opt_workload != OSNOISE_OPTION_INIT_VAL)
850 return context->orig_opt_workload;
852 context->orig_opt_workload = osnoise_options_get_option("OSNOISE_WORKLOAD");
854 return context->orig_opt_workload;
857 int osnoise_set_workload(struct osnoise_context *context, bool onoff)
859 int opt_workload = osnoise_get_workload(context);
872 context->opt_workload = onoff;
877 static void osnoise_restore_workload(struct osnoise_context *context)
881 if (context->orig_opt_workload == OSNOISE_OPTION_INIT_VAL)
884 if (context->orig_opt_workload == context->opt_workload)
887 retval = osnoise_options_set_option("OSNOISE_WORKLOAD", context->orig_opt_workload);
892 context->orig_opt_workload = OSNOISE_OPTION_INIT_VAL;
895 static void osnoise_put_workload(struct osnoise_context *context)
897 osnoise_restore_workload(context);
899 if (context->orig_opt_workload == OSNOISE_OPTION_INIT_VAL)
902 context->orig_opt_workload = OSNOISE_OPTION_INIT_VAL;
927 * osnoise_get_context - increase the usage of a context and return it
929 int osnoise_get_context(struct osnoise_context *context)
933 if (context->flags & FLAG_CONTEXT_DELETED) {
936 context->ref++;
946 * The osnoise context contains the information of the "osnoise/" configs.
951 struct osnoise_context *context;
953 context = calloc(1, sizeof(*context));
954 if (!context)
957 context->orig_stop_us = OSNOISE_OPTION_INIT_VAL;
958 context->stop_us = OSNOISE_OPTION_INIT_VAL;
960 context->orig_stop_total_us = OSNOISE_OPTION_INIT_VAL;
961 context->stop_total_us = OSNOISE_OPTION_INIT_VAL;
963 context->orig_print_stack = OSNOISE_OPTION_INIT_VAL;
964 context->print_stack = OSNOISE_OPTION_INIT_VAL;
966 context->orig_tracing_thresh = OSNOISE_OPTION_INIT_VAL;
967 context->tracing_thresh = OSNOISE_OPTION_INIT_VAL;
969 context->orig_opt_irq_disable = OSNOISE_OPTION_INIT_VAL;
970 context->opt_irq_disable = OSNOISE_OPTION_INIT_VAL;
972 context->orig_opt_workload = OSNOISE_OPTION_INIT_VAL;
973 context->opt_workload = OSNOISE_OPTION_INIT_VAL;
975 osnoise_get_context(context);
977 return context;
983 * If there is no other user for the context, the original data
986 void osnoise_put_context(struct osnoise_context *context)
988 if (--context->ref < 1)
989 context->flags |= FLAG_CONTEXT_DELETED;
991 if (!(context->flags & FLAG_CONTEXT_DELETED))
994 osnoise_put_cpus(context);
995 osnoise_put_runtime_period(context);
996 osnoise_put_stop_us(context);
997 osnoise_put_stop_total_us(context);
998 osnoise_put_timerlat_period_us(context);
999 osnoise_put_print_stack(context);
1000 osnoise_put_tracing_thresh(context);
1001 osnoise_put_irq_disable(context);
1002 osnoise_put_workload(context);
1004 free(context);
1017 if (top->context)
1018 osnoise_put_context(top->context);
1026 * It allocs data, create a context to store data and
1038 top->context = osnoise_context_alloc();
1039 if (!top->context)