Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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));
}