int32_t network_client_send_mb(network_client *nc, mb_t *mb, uint32_t flags) { int32_t err = -EKILLED; proto_watch *pw = NULL; pthread_mutex_lock(nc->lock); if (!__network_client_killed(nc)) { pw = proto_watch_ref(nc->proto_watch); } pthread_mutex_unlock(nc->lock); if (pw) { err = proto_watch_write_mb(pw, mb, flags); proto_watch_unref(pw); } else { free_memblock(mb); } return err; }
void free_mman(mman_t* mm) { if (mm->last) { memblock_t* block = mm->last; do { memblock_t* freeblock = block; block = block->next; free_memblock(freeblock); } while (block != mm->last); } memset(mm, 0, sizeof(*mm)); }