int kperf_sampling_enable(void) { if (sampling_status == KPERF_SAMPLING_ON) { return 0; } if (sampling_status != KPERF_SAMPLING_OFF) { panic("kperf: sampling was %d when asked to enable", sampling_status); } /* make sure interrupt tables and actions are initted */ if (!kperf_initted || (kperf_action_get_count() == 0)) { return ECANCELED; } /* mark as running */ sampling_status = KPERF_SAMPLING_ON; kperf_lightweight_pet_active_update(); /* tell timers to enable */ kperf_timer_go(); return 0; }
int kperf_kdebug_set_action(int action_id) { if (action_id < 0 || (unsigned int)action_id > kperf_action_get_count()) { return EINVAL; } kperf_kdebug_action = action_id; kperf_kdebug_update(); return 0; }
static int sysctl_action_count( struct sysctl_oid *oidp, struct sysctl_req *req ) { int error = 0; uint32_t value = 0; /* get the old value and process it */ value = kperf_action_get_count(); /* copy out the old value, get the new value */ error = sysctl_handle_int(oidp, &value, 0, req); if (error || !req->newptr) return (error); /* if that worked, and we're writing... */ return kperf_action_set_count(value); }