Beispiel #1
0
/*---------------------------------------------------------------------------*/
static void xio_ctor(void)
{
	size_t i;
	xio_env_startup();
	for (i = 0; i < transport_tbl_sz; i++)
		if (!transport_tbl[i])
			transport_tbl[i] = transport_func_list_tbl[i]();

	page_size = xio_get_page_size();
	if (page_size < 0)
		page_size = 4096;
	g_mhz = xio_get_cpu_mhz();
	xio_thread_data_construct();
	usr_idr = xio_idr_create();
	if (!usr_idr)
		ERROR_LOG("usr_idr creation failed");
	sessions_cache_construct();
	nexus_cache_construct();

	for (i = 0; i < transport_tbl_sz; i++) {
		xio_reg_transport(transport_tbl[i]);

		if (transport_tbl[i]->ctor)
			transport_tbl[i]->ctor();
	}
}
Beispiel #2
0
/*---------------------------------------------------------------------------*/
__attribute__((constructor)) void xio_init(void)
{
	static atomic_t initialized;
	static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;

	if (! atomic_read(&initialized)) {
		pthread_mutex_lock(&mtx);
		if (!atomic_read(&initialized)) {
			page_size = sysconf(_SC_PAGESIZE);
			xio_thread_data_construct();
			sessions_store_construct();
			conns_store_construct();
			atomic_set(&initialized, 1);
		}
		pthread_mutex_unlock(&mtx);
	}
}