Exemplo n.º 1
0
int net_init_sendlock(nd_netui_handle socket_node)
{
	socket_node->send_lock=malloc(sizeof(nd_mutex )) ;
	if(!socket_node->send_lock)
		return -1 ;
	if(-1==nd_mutex_init(socket_node->send_lock)){
		free(socket_node->send_lock) ;
		socket_node->send_lock = NULL ;
		return -1 ;
	}
	return 0 ;

}
Exemplo n.º 2
0
nd_sa_handle nd_sa_create(int node_num, size_t node_size, nd_handle mempool)
{
	int i ;
	size_t raw_len;
	char *addr ;
	nd_static_alloc_t *allocator ;
	nd_handle pool ;

	node_size = GET_SA_ALLOC_MIN_SIZE(node_size) ;
		
	raw_len = node_num * node_size + sizeof(nd_static_alloc_t);
	
	if(mempool) 
		pool =mempool ;
	else 
		pool = nd_global_mmpool() ;

	nd_assert(pool) ;
	
	allocator = (nd_static_alloc_t *)nd_pool_alloc(pool, raw_len ) ;

	if(!allocator) {
		return NULL;
	}

	allocator->size = (NDUINT32) raw_len;						/*句柄的大小*/
	allocator->type =NDHANDLE_STATICALLOCATOR;					/*句柄类型*/
	allocator->close_entry =(nd_close_callback) nd_sa_destroy ;			/*句柄释放函数*/
	allocator->myerrno = NDERR_SUCCESS ;
	allocator->capacity =node_num;	
	allocator->node_size = node_size ;
	allocator->allocated_num = 0 ;
	allocator->mem_pool = pool ;
	
	nd_mutex_init(&allocator->list_lock);
	INIT_LIST_HEAD(&allocator-> __free_list);

	addr = allocator->addr ;

	for (i=0; i<node_num; i++){
		struct list_head *list = (struct list_head *)addr ;
		
		INIT_LIST_HEAD(list);
		list_add(list,&(allocator->__free_list)) ;
		addr += node_size ;
	}
	return (nd_sa_handle)allocator ;
}