static void opd_26_init(void) { size_t i; size_t opd_buf_size; opd_create_vmlinux(vmlinux, kernel_range); opd_buf_size = opd_read_fs_int("/dev/oprofile/", "buffer_size", 1); kernel_pointer_size = opd_read_fs_int("/dev/oprofile/", "pointer_size", 1); s_buf_bytesize = opd_buf_size * kernel_pointer_size; sbuf = xmalloc(s_buf_bytesize); opd_reread_module_info(); for (i = 0; i < OPD_MAX_STATS; i++) opd_stats[i] = 0; perfmon_init(); cookie_init(); sfile_init(); anon_init(); /* must be /after/ perfmon_init() at least */ if (atexit(clean_exit)) { perfmon_exit(); perror("oprofiled: couldn't set exit cleanup: "); exit(EXIT_FAILURE); } }
static void opd_26_init(void) { size_t i; size_t opd_buf_size; unsigned long long start_time = 0ULL; struct timeval tv; opd_create_vmlinux(vmlinux, kernel_range); opd_create_xen(xenimage, xen_range); opd_buf_size = opd_read_fs_int("/dev/oprofile/", "buffer_size", 1); kernel_pointer_size = opd_read_fs_int("/dev/oprofile/", "pointer_size", 1); s_buf_bytesize = opd_buf_size * kernel_pointer_size; sbuf = xmalloc(s_buf_bytesize); opd_reread_module_info(); for (i = 0; i < OPD_MAX_STATS; i++) opd_stats[i] = 0; perfmon_init(); cookie_init(); sfile_init(); anon_init(); /* must be /after/ perfmon_init() at least */ if (atexit(clean_exit)) { perfmon_exit(); perror("oprofiled: couldn't set exit cleanup: "); exit(EXIT_FAILURE); } /* trigger kernel module setup before returning control to opcontrol */ opd_open_files(); gettimeofday(&tv, NULL); start_time = 0ULL; start_time = tv.tv_sec; sprintf(start_time_str, "%llu", start_time); }
static void clean_exit(void) { perfmon_exit(); unlink(op_lock_file); }
static void clean_exit(void) { perfmon_exit(); unlink(OP_LOCK_FILE); }
void oprofile_arch_exit(void) { #ifdef CONFIG_PERFMON perfmon_exit(); #endif }