void opque_free(opque_t *opq, int mode) { que_data_t *q = &(opq->qd); log_printf(15, "qid=%d nfin=%d nlist=%d nfailed=%d\n", gop_id(&(opq->op)), stack_size(q->finished), stack_size(q->list), stack_size(q->failed)); lock_opque(&(opq->qd)); //** Lock it to make sure Everything is finished and safe to free //** Free the stacks free_stack(q->failed, 0); free_finished_stack(q->finished, mode); free_list_stack(q->list, mode); unlock_opque(&(opq->qd)); //** Has to be unlocked for gop_generic_free to work cause it also locks it gop_generic_free(opque_get_gop(opq), mode); if (mode == OP_DESTROY) free(opq); }
void _tp_op_free(gop_op_generic_t *gop, int mode) { gop_thread_pool_op_t *top = gop_get_tp(gop); int id = gop_id(gop); log_printf(15, "_tp_op_free: mode=%d gid=%d gop=%p\n", mode, gop_id(gop), gop); tbx_log_flush(); if (top->my_op_free != NULL) top->my_op_free(top->arg); gop_generic_free(gop, OP_FINALIZE); //** I free the actual op if (top->dop.cmd.hostport) free(top->dop.cmd.hostport); if (mode == OP_DESTROY) free(gop->free_ptr); log_printf(15, "_tp_op_free: gid=%d END\n", id); tbx_log_flush(); }
void _gop_dummy_free(op_generic_t *gop, int mode) { gop_generic_free(gop, mode); //** I free the actual op if (mode == OP_DESTROY) free(gop); }