コード例 #1
0
ファイル: display_matrix.c プロジェクト: pcercuei/dcplaya
int display_matrix_shutdown(void)
{
  allocator_destroy(matrixdef_allocator);
  allocator_destroy(matrixref_allocator);
  matrixdef_allocator = 0;
  matrixref_allocator = 0;
  return 0;
}
コード例 #2
0
ファイル: wrapper.c プロジェクト: rscohn2/MLSL
int EPLIB_finalize()
{
    if (!__sync_bool_compare_and_swap(&is_eplib_finalized, 0, 1))
    {
        DEBUG_PRINT("already finalized, skip EPLIB_finalize\n");
        return MPI_SUCCESS;
    }

    allocator_pre_destroy();

    if (max_ep > 0)
    {
        if (std_mpi_mode == STD_MPI_MODE_IMPLICIT)
            free(block_coll_request);

        handle_finalize();
        window_finalize();
        client_finalize();
    }

    allocator_destroy();

    fini_sig_handlers();

    return MPI_SUCCESS;
}
コード例 #3
0
ファイル: genesis.c プロジェクト: suzp1984/genesis
int main(int argc, char* argv[])
{
    Allocator* alloc = allocator_nginx_create(1024);
    Config* config = config_xml_expat_create();
    
    config_load(config, "../../../src/app/genesis-config.xml");
    Reactor* reactor = reactor_create(config, alloc);

    SourcesManager* sources_manager = NULL;
    reactor_get_sources_manager(reactor, &sources_manager);
    MainLoop* main_loop = NULL;
    reactor_get_main_loop(reactor, &main_loop);
    Source* timer_source = source_timer_create(2000, test_timer, (void*)reactor);
    //sources_manager_add_source(sources_manager, timer_source);
    logger_debug(reactor->logger, "sources_count = %d", sources_manager_get_count(sources_manager));
    main_loop_add_source(main_loop, timer_source);
    logger_debug(reactor->logger, "sources_count = %d", sources_manager_get_count(sources_manager));

    reactor_run(reactor);
    
    reactor_destroy(reactor);

    config_destroy(config);

    allocator_destroy(alloc);

    return 0;
}
コード例 #4
0
ファイル: test_rbtree_map.c プロジェクト: a1an1in/libcutils
int test_datastructure_rbtree_map(void)
{
	int ret = 0;
	rbtree_map_pos_t it,next,end;
	rbtree_map_t *map;
	allocator_t *allocator = allocator_get_default_alloc();
	pair_t *pair;
	struct rbtree_map_node *mnode;
	int key_len = 2;

	struct A t1 = {1,2};
	struct A t2 = {2,2};
	struct A t3 = {3,2};
	struct A t4 = {4,2};
	struct A t5 = {5,2};

	dbg_str(DBG_DETAIL,"rbtree allocator addr:%p",allocator);
	map = rbtree_map_create(allocator,0);

	rbtree_map_init(map,key_len,sizeof(struct A) + key_len,NULL); 

	dbg_str(DBG_DETAIL,"create_pair");
	pair = create_pair(key_len,sizeof(struct A));

	make_pair(pair,"44",&t4);
	rbtree_map_insert(map,pair->data);
	make_pair(pair,"33",&t3);
	rbtree_map_insert(map,pair->data);
	make_pair(pair,"22",&t2);
	rbtree_map_insert(map,pair->data);
	make_pair(pair,"11",&t1);
	rbtree_map_insert(map,pair->data);


	dbg_str(DBG_DETAIL,"foreach ordinal print");
	for(	rbtree_map_begin(map,&it),rbtree_map_pos_next(&it,&next); 
			!rbtree_map_pos_equal(&it,rbtree_map_end(map,&end));
			it = next,rbtree_map_pos_next(&it,&next))
	{
		mnode = rb_entry(it.rb_node_p,struct rbtree_map_node,node);
		dbg_buf(DBG_DETAIL,"key:",mnode->key,mnode->value_pos);
		print_A((struct A*)rbtree_map_pos_get_pointer(&it));
	}

	dbg_str(DBG_DETAIL,"search node key = 22");
	rbtree_map_search(map, (void *)"22",&it);
	print_A((struct A*)rbtree_map_pos_get_pointer(&it));

	/*
	 *dbg_str(DBG_DETAIL,"delte node key = 11");
	 *container_delete(map,&it);
	 */

	rbtree_map_destroy(map);
	allocator_destroy(allocator);
	dbg_str(DBG_DETAIL,"map addr =%p",map);

	return ret;
}
コード例 #5
0
static ssize_t allocator_new(allocator_fixed_t **pfdata, hash_t *config){ // {{{
	ssize_t                ret;
	data_t                *sample;
	allocator_fixed_t     *fdata;
	
	if((fdata = calloc(1, sizeof(allocator_fixed_t))) == NULL)
		return error("calloc failed");
	
	pthread_rwlock_init(&fdata->rwlock, NULL);
	
	// get removed items tracker
	hash_holder_consume(ret, fdata->removed_items, config, HK(removed_items));
	hash_holder_consume(ret, fdata->storage,       config, HK(storage));
	if(ret != 0){
		ret = error("invalid storage supplied");
		goto error;
	}
	
	hash_data_get(ret, TYPE_UINTT, fdata->item_size, config, HK(item_size));
	if(ret != 0){
		if( (sample = hash_data_find(config, HK(item_sample))) == NULL){
			ret = error("no item_size nor item_sample supplied");
			goto error;
		}
		
		fastcall_length r_len = { { 4, ACTION_LENGTH }, 0, FORMAT(binary) };
		if( data_query(sample, &r_len) != 0 ){
			ret = error("bad item_sample");
			goto error;
		}
		
		fdata->item_size = r_len.length;
	}
	if(fdata->item_size == 0){
		ret = error("bad item size");
		goto error;
	}
	
	// get last id
	fastcall_length r_len = { { 4, ACTION_LENGTH }, 0, FORMAT(clean) };
	if( data_query(&fdata->storage, &r_len) != 0){
		ret = error("bad underlying storage");
		goto error;
	}
	fdata->last_id = r_len.length / fdata->item_size;
	
	*pfdata = fdata;
	return 0;

error:
	allocator_destroy(fdata);
	return ret;
} // }}}
コード例 #6
0
ファイル: znet_cpeer.c プロジェクト: breezechen/zevent
int cpeer_kill(struct cpeer *p)
{
        if(!p)
	    return 0;
	if(__sync_bool_compare_and_swap(&p->status,CPEER_CONNECTED,CPEER_DISCONNECTED))
	{
		printf("ref:%d,close peer id:%lu,peer:%p,nc:%p\n",p->refcount,p->id,p,p->nc);
		close(p->sd);
		fdev_del(&p->ioev);

		//push one msg to notify disconnect
		struct msg_t *msg = (struct msg_t *)mmalloc(p->nc->allocator,
			sizeof(struct msg_t));
		msg->buf = NULL;
		msg->len = 0;
		msg->peer_id = p->id;
		msg->type = MSG_DISCONNECT;

		queue_push(p->nc->recv_queue,msg);
	}

	if(__sync_bool_compare_and_swap(&p->refcount,0,1))
	{
		printf("free peer id:%lu\n",p->id);
		iobuf_free(p->allocator,&p->recvbuf);
		iobuf_free(p->allocator,&p->sendbuf);
		//free send queue
		struct msg_t *msg = NULL,*next = NULL;
		thread_mutex_lock(p->sq_mutex);
		msg = BTPDQ_FIRST(&p->send_queue);
		while(msg){
			next = BTPDQ_NEXT(msg,msg_entry);
			BTPDQ_REMOVE(&p->send_queue,msg,msg_entry);

			mfree(p->allocator,msg->buf);
			mfree(p->allocator,msg);
			msg = next;
		}
		thread_mutex_unlock(p->sq_mutex);

		thread_mutex_destroy(p->mpool_mutex);
		thread_mutex_destroy(p->sq_mutex);

		allocator_destroy(p->allocator);

		thread_mutex_lock(p->nc->peer_mutex);
		mfree(p->nc->allocator,p);
		p->nc->peer = NULL;
		thread_mutex_unlock(p->nc->peer_mutex);
	}
	return 0;
}
コード例 #7
0
ファイル: allocation.c プロジェクト: jrcutler/threadless.io
int main(int argc, char *argv[])
{
    int error;
    allocator_t *allocator;

    (void) argc;
    (void) argv;

    printf("default allocator:\n");
    allocator = default_allocator_get();
    error = run(allocator);
    allocator_destroy(allocator);

#ifdef HAVE_MMAP
    if (!error) {
        printf("mmap allocator:\n");
        allocator = mmap_allocator_get();
        error = run(allocator);
        allocator_destroy(allocator);
    }
#endif

    return !error ? EXIT_SUCCESS : EXIT_FAILURE;
}
コード例 #8
0
ファイル: test_cds_alloc.c プロジェクト: a1an1in/libcontainer
void test_cds_alloc()
{
	allocator_t *allocator;
	void *p ,*p2,*p3;
	uint32_t size = 8;

	/*
	 *alloc_p->slab_max_num = SLAB_ARRAY_MAX_NUM;
	 *alloc_p->data_min_size = 8;
	 *alloc_p->mempool_capacity = MEM_POOL_MAX_SIZE;
	 */
	allocator = allocator_creator(ALLOCATOR_TYPE_CDS_MALLOC);
	allocator_cds_init(allocator, 0, 0, 1024);
	/*
	 *allocator_cds_init(allocator,0,0,0);
	 */

	p = allocator_mem_alloc(allocator,7);
	dbg_str(DBG_CONTAINER_DETAIL,"alloc addr:%p",p);

	allocator_mem_free(allocator,p);

	p2 = allocator_mem_alloc(allocator,8);
	dbg_str(DBG_CONTAINER_DETAIL,"alloc addr:%p",p2);

	p3 = allocator_mem_alloc(allocator,200);
	dbg_str(DBG_CONTAINER_DETAIL,"alloc addr:%p",p3);

	dbg_str(DBG_CONTAINER_DETAIL,"inquire alloc info");
	allocator_mem_info(allocator);

	allocator_mem_free(allocator,p);
	allocator_mem_free(allocator,p2);
	allocator_mem_free(allocator,p3);

	dbg_str(DBG_CONTAINER_DETAIL,"batch alloc");
	int i;
	for(size = 8,i = 0; i< 20; i++,size += 8){
		p = allocator_mem_alloc(allocator,size);
	}
	dbg_str(DBG_CONTAINER_DETAIL,"inquire alloc info");
	allocator_mem_info(allocator);

	allocator_destroy(allocator);
	dbg_str(DBG_CONTAINER_DETAIL,"test cds alloc end");
}
コード例 #9
0
ファイル: avheap.c プロジェクト: inn1983/cedarx-libs
//*************************************************************************//
//* release the av heap.
//*************************************************************************//
void av_heap_release(void)
{
    if(heap_ctx == NULL)
    {
        loge("av heap context is not initialized yet.");
        return;
    }

    if(heap_ctx->allocator != NULL)
        allocator_destroy(heap_ctx->allocator);

    pthread_mutex_destroy(&heap_ctx->mutex);

    free(heap_ctx);

    heap_ctx = NULL;

    return;
}
コード例 #10
0
ファイル: allocator_normal.c プロジェクト: 0ct0cat/spexamples
int main(int argc, char* argv[])
{
	int i = 0;
	int n = 100;
	Allocator* allocator = allocator_normal_create();

	for(i = 0; i < n; i++)
	{
		char* ptr = allocator_alloc(allocator, i);
		ptr = allocator_realloc(allocator, ptr, i+4);
		allocator_free(allocator, ptr);
		ptr = allocator_calloc(allocator, i+4, 4);
		allocator_free(allocator, ptr);
	}
	
	allocator_destroy(allocator);

	return 0;
}
コード例 #11
0
ファイル: znet_client.c プロジェクト: breezechen/zevent
int nc_disconnect(net_client_t *nc)
{
    if(!nc)
	return -1;
    fdev_del(&nc->ev);
    close(nc->sd);
    nc->endgame = 1;
    pthread_join(nc->td_start,NULL);

    cpeer_kill(nc->peer);
    queue_destroy(nc->recv_queue);
    thread_mutex_destroy(nc->peer_mutex);
    //thread_mutex_destroy(nc->recv_mutex);
    thread_mutex_destroy(nc->mpool_mutex);
    allocator_destroy(nc->allocator);
    free(nc);

    return 0;
}
コード例 #12
0
ファイル: allocator_test.c プロジェクト: songtzu/study
int 
main(int argc, char* argv[])
{
  int* arr[ALLOC_TIMES];
  int i, counter;
  clock_t beg, end;

  allocator_init();

  counter = 0;
  beg = clock();
  while (counter++ < LOOP_TIMES) {
    for (i = 0; i < ALLOC_TIMES; ++i) 
      arr[i] = (int*)malloc(sizeof(int));
    
    for (i = 0; i < ALLOC_TIMES; ++i) 
      free(arr[i]);
  }
  end = clock();
  fprintf(stdout, "default use : %lu\n", end - beg);
  
  counter = 0;
  beg = clock();
  while (counter++ < LOOP_TIMES) {
    for (i = 0; i < ALLOC_TIMES; ++i) 
      arr[i] = (int*)al_malloc(sizeof(int));
    
    for (i = 0; i < ALLOC_TIMES; ++i) 
      al_free(arr[i]);
  }
  end = clock();
  fprintf(stdout, "allocator use : %lu\n", end - beg);


  allocator_destroy();

  return 0;
}
コード例 #13
0
ファイル: znet_peer.c プロジェクト: zhoubug/znet
int peer_kill(struct peer *p)
{
    if(!p)
        return 0;
    if(__sync_bool_compare_and_swap(&p->status,PEER_CONNECTED,PEER_DISCONNECTED))
    {
		close(p->sd);
		fdev_del(&p->ioev);
        log_error(p->ns->log,"ns peer socket closed,peer ip:%s.", inet_ntoa(p->addr.sin_addr));
		//push one msg to notify disconnect
        if(!p->ns->close_func)
        {
            struct msg_t *msg = (struct msg_t *)mmalloc(p->ns->allocator,
                    sizeof(struct msg_t));
            msg->buf = NULL;
            msg->len = 0;
            msg->peer_id = p->id;
            msg->type = MSG_DISCONNECT;

            queue_push(p->ns->recv_queue,msg);
            log_error(p->ns->log,"ns push notify msg for client:%s disconneced.", inet_ntoa(p->addr.sin_addr));
        }
        else
        {
            log_error(p->ns->log,"ns call close_func for client:%s disconneced.", inet_ntoa(p->addr.sin_addr));
            p->ns->close_func(p->ns,p->id);
        }
	}

	if(__sync_bool_compare_and_swap(&p->refcount,0,1))
	{
        log_error(p->ns->log,"ns peer freed,peer ip:%s.", inet_ntoa(p->addr.sin_addr));
		iobuf_free(p->allocator,&p->recvbuf);
		iobuf_free(p->allocator,&p->sendbuf);
		//free send queue
		struct msg_t *msg = NULL,*next = NULL;
		thread_mutex_lock(p->sq_mutex);
		msg = BTPDQ_FIRST(&p->send_queue);
		while(msg){
			next = BTPDQ_NEXT(msg,msg_entry);
			BTPDQ_REMOVE(&p->send_queue,msg,msg_entry);

			mfree(p->allocator,msg->buf);
			mfree(p->allocator,msg);
			msg = next;
		}
		thread_mutex_unlock(p->sq_mutex);

		thread_mutex_destroy(p->mpool_mutex);
		thread_mutex_destroy(p->sq_mutex);

		allocator_destroy(p->allocator);

		mfree(p->ns->allocator,p);

		thread_mutex_lock(p->ns->ptbl_mutex);
		ptbl_remove(p->ns->ptbl,&p->id);
		p->ns->npeers--;
		thread_mutex_unlock(p->ns->ptbl_mutex);
	}
	return 0;
}
コード例 #14
0
static ssize_t data_allocator_fixed_t_free(data_t *data, fastcall_free *fargs){ // {{{
	if(data->ptr != NULL)
		allocator_destroy(data->ptr);
	
	return 0;
} // }}}