void mtev_skiplist_destroy(mtev_skiplist *sl, mtev_freefunc_t myfree) { if(sl->index) { while(mtev_skiplist_pop(sl->index, mtev_skiplisti_destroy) != NULL); free((void *) sl->index); } mtev_skiplist_remove_all(sl, myfree); }
static void finish_procs() { struct proc_state *ps; process_siglist(); mtevL(noit_debug, "%d done procs to cleanup\n", done_procs.size); while((ps = mtev_skiplist_pop(&done_procs, NULL)) != NULL) { mtevL(noit_debug, "finished %lld/%d\n", (long long int)ps->check_no, ps->pid); if(ps->cancelled == 0) { assert_write(out_fd, &ps->check_no, sizeof(ps->check_no)); assert_write(out_fd, &ps->status, sizeof(ps->status)); write_out_backing_fd(out_fd, ps->stdout_fd); write_out_backing_fd(out_fd, ps->stderr_fd); } proc_state_free(ps); } }