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 ; }
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 ; }