void monitor_fini_thread(void* data) { if (opt_debug >= 1) { fprintf(stderr, "fini_thread(TID=0x%lx) callback from monitor received\n", (long)pthread_self()); } fini_thread((hpcrun_profiles_desc_t **)(&data), 1 /*is_thread*/); }
static int fini(void) { int ret; ret = fini_thread(); sys_munmap(tid_state, TID_STATE_SIZE(nr_tid_state)); log_set_fd(-1); sys_close(tsock); return ret; }
int __used parasite_service(unsigned int cmd, void *args) { pr_info("Parasite cmd %d/%x process\n", cmd, cmd); switch (cmd) { case PARASITE_CMD_INIT: return init(args); case PARASITE_CMD_INIT_THREAD: return init_thread(); case PARASITE_CMD_FINI: return fini(); case PARASITE_CMD_FINI_THREAD: return fini_thread(); case PARASITE_CMD_CFG_LOG: return parasite_cfg_log(args); case PARASITE_CMD_DUMPPAGES: return dump_pages(args); case PARASITE_CMD_MPROTECT_VMAS: return mprotect_vmas(args); case PARASITE_CMD_DUMP_SIGACTS: return dump_sigact(args); case PARASITE_CMD_DUMP_ITIMERS: return dump_itimers(args); case PARASITE_CMD_DUMP_MISC: return dump_misc(args); case PARASITE_CMD_DUMP_CREDS: return dump_creds(args); case PARASITE_CMD_DUMP_THREAD: return dump_thread(args); case PARASITE_CMD_DRAIN_FDS: return drain_fds(args); case PARASITE_CMD_GET_PROC_FD: return parasite_get_proc_fd(); case PARASITE_CMD_DUMP_TTY: return parasite_dump_tty(args); } pr_err("Unknown command to parasite: %d\n", cmd); return -EINVAL; }