static int set_enable(const char *arg, const struct kernel_param *kp) { int ret; bool old_val = *((bool *) kp->arg); bool new_val; if (!arg) arg = "1"; ret = strtobool(arg, &new_val); if (ret) return ret; if (!old_val && new_val) { if (start_monitoring()) { pr_err("L2PM counters already in use.\n"); return ret; } else { pr_info("Enabling CPU BW monitoring\n"); } } else if (old_val && !new_val) { pr_info("Disabling CPU BW monitoring\n"); stop_monitoring(); } *(bool *) kp->arg = new_val; return 0; }
static int devfreq_cpubw_hwmon_ev_handler(struct devfreq *df, unsigned int event, void *data) { int ret; switch (event) { case DEVFREQ_GOV_START: ret = start_monitoring(df); if (ret) return ret; ret = sysfs_create_group(&df->dev.kobj, &dev_attr_group); if (ret) return ret; devfreq_monitor_start(df); pr_debug("Enabled CPU BW HW monitor governor\n"); break; case DEVFREQ_GOV_STOP: sysfs_remove_group(&df->dev.kobj, &dev_attr_group); devfreq_monitor_stop(df); *(unsigned long *)df->data = 0; stop_monitoring(df); pr_debug("Disabled CPU BW HW monitor governor\n"); break; case DEVFREQ_GOV_INTERVAL: devfreq_interval_update(df, (unsigned int *)data); break; } return 0; }
/** * @brief CTRL-C handler for infinite monitoring loop * * @param [in] signo signal number */ static void monitoring_ctrlc(int signo) { printf("\nExiting[%d]...\n", signo); stop_monitoring(); if (pqos_fini() != PQOS_RETVAL_OK) { printf("Error shutting down PQoS library!\n"); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); }
static VALUE rb_monitor_stop(VALUE self) { WDM_PMonitor monitor; Data_Get_Struct(self, WDM_Monitor, monitor); stop_monitoring(monitor); WDM_DEBUG("Stopped the monitor!"); return Qnil; }
int main(int argc, char *argv[]) { struct pqos_config config; const struct pqos_cpuinfo *p_cpu = NULL; const struct pqos_cap *p_cap = NULL; int ret, exit_val = EXIT_SUCCESS; const struct pqos_capability *cap_mon = NULL; memset(&config, 0, sizeof(config)); config.fd_log = STDOUT_FILENO; config.verbose = 0; /* PQoS Initialization - Check and initialize CAT and CMT capability */ ret = pqos_init(&config); if (ret != PQOS_RETVAL_OK) { printf("Error initializing PQoS library!\n"); exit_val = EXIT_FAILURE; goto error_exit; } /* Get CMT capability and CPU info pointer */ ret = pqos_cap_get(&p_cap, &p_cpu); if (ret != PQOS_RETVAL_OK) { printf("Error retrieving PQoS capabilities!\n"); exit_val = EXIT_FAILURE; goto error_exit; } /* Get input from user */ monitoring_get_input(argc, argv); (void) pqos_cap_get_type(p_cap, PQOS_CAP_TYPE_MON, &cap_mon); /* Setup the monitoring resources */ ret = setup_monitoring(p_cpu, cap_mon); if (ret != PQOS_RETVAL_OK) { printf("Error Setting up monitoring!\n"); exit_val = EXIT_FAILURE; goto error_exit; } /* Start Monitoring */ monitoring_loop(); /* Stop Monitoring */ stop_monitoring(); error_exit: ret = pqos_fini(); if (ret != PQOS_RETVAL_OK) printf("Error shutting down PQoS library!\n"); return exit_val; }
void fm_tree_model_set_show_only_directories (FMTreeModel *model, gboolean show_only_directories) { g_return_if_fail (FM_IS_TREE_MODEL (model)); g_return_if_fail (show_only_directories == FALSE || show_only_directories == TRUE); show_only_directories = show_only_directories != FALSE; if (model->details->show_only_directories == show_only_directories) { return; } model->details->show_only_directories = show_only_directories; stop_monitoring (model); if (show_only_directories) { destroy_by_function (model, file_is_not_directory); } schedule_monitoring_update (model); }
static void monitor_free(LPVOID param) { WDM_PMonitor monitor; WDM_PEntry entry; WDM_DEBUG("Freeing a monitor object!"); monitor = (WDM_PMonitor)param; entry = monitor->head; stop_monitoring(monitor); // If the monitor is already stopped, it would do nothing while(entry != NULL) { if ( entry->event_container.hEvent != NULL ) { wdm_monitor_callback_param_free( (WDM_PMonitorCallbackParam)entry->event_container.hEvent ); } entry = entry->next; } wdm_monitor_free(monitor); }