void fpm_scoreboard_free(struct fpm_scoreboard_s *scoreboard) /* {{{ */ { int i; if (!scoreboard) { zlog(ZLOG_ERROR, "**scoreboard is NULL"); return; } for (i = 0; i < scoreboard->nprocs; i++) { if (!scoreboard->procs[i]) { continue; } fpm_shm_free(scoreboard->procs[i], sizeof(struct fpm_scoreboard_proc_s)); } fpm_shm_free(scoreboard, sizeof(struct fpm_scoreboard_s)); }
void fpm_scoreboard_free(struct fpm_scoreboard_s *scoreboard) /* {{{ */ { size_t scoreboard_size, scoreboard_nprocs_size; if (!scoreboard) { zlog(ZLOG_ERROR, "**scoreboard is NULL"); return; } scoreboard_size = sizeof(struct fpm_scoreboard_s) + (scoreboard->nprocs) * sizeof(struct fpm_scoreboard_proc_s *); scoreboard_nprocs_size = sizeof(struct fpm_scoreboard_proc_s) * scoreboard->nprocs; fpm_shm_free(scoreboard, scoreboard_size + scoreboard_nprocs_size); }
static void fpm_worker_pool_cleanup(int which, void *arg) /* {{{ */ { struct fpm_worker_pool_s *wp, *wp_next; for (wp = fpm_worker_all_pools; wp; wp = wp_next) { wp_next = wp->next; fpm_worker_pool_config_free(wp->config); fpm_children_free(wp->children); fpm_array_free(&wp->slots_used); fpm_array_free(&wp->slots_free); fpm_shm_free_list(wp->shm_list, which == FPM_CLEANUP_CHILD ? fpm_shm_slots_mem() : 0); if (wp->shm_status && which != FPM_CLEANUP_CHILD) { fpm_shm_free(wp->shm_status, !fpm_globals.is_child); } free(wp->config); free(wp->user); free(wp->home); free(wp); } fpm_worker_all_pools = 0; }