fixed the hcl server to apply some settings to underlying hcl
This commit is contained in:
		
							
								
								
									
										1
									
								
								hcl/configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								hcl/configure
									
									
									
									
										vendored
									
									
								
							| @ -17966,7 +17966,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| check some compiler builtins |  | ||||||
| { $as_echo "$as_me:${as_lineno-$LINENO}: checking __builtin_memset" >&5 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking __builtin_memset" >&5 | ||||||
| $as_echo_n "checking __builtin_memset... " >&6; } | $as_echo_n "checking __builtin_memset... " >&6; } | ||||||
| cat confdefs.h - <<_ACEOF >conftest.$ac_ext | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||||||
|  | |||||||
| @ -83,7 +83,7 @@ AC_SUBST(LIBM, $LIBM) | |||||||
| AX_PTHREAD() | AX_PTHREAD() | ||||||
|  |  | ||||||
|  |  | ||||||
| check some compiler builtins | dnl check some compiler builtins | ||||||
| AC_MSG_CHECKING([__builtin_memset]) | AC_MSG_CHECKING([__builtin_memset]) | ||||||
| AC_COMPILE_IFELSE( | AC_COMPILE_IFELSE( | ||||||
| 	[AC_LANG_PROGRAM([], [__builtin_memset ((void*)1, ' ', 10);])], | 	[AC_LANG_PROGRAM([], [__builtin_memset ((void*)1, ' ', 10);])], | ||||||
|  | |||||||
| @ -1637,6 +1637,7 @@ hcl_server_t* hcl_server_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_server_p | |||||||
| 	hcl_tmr_t* tmr; | 	hcl_tmr_t* tmr; | ||||||
| 	dummy_hcl_xtn_t* xtn; | 	dummy_hcl_xtn_t* xtn; | ||||||
| 	int pfd[2], fcv; | 	int pfd[2], fcv; | ||||||
|  | 	unsigned int trait; | ||||||
|  |  | ||||||
| 	server = (hcl_server_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*server) + xtnsize); | 	server = (hcl_server_t*)HCL_MMGR_ALLOC(mmgr, HCL_SIZEOF(*server) + xtnsize); | ||||||
| 	if (!server)  | 	if (!server)  | ||||||
| @ -1714,6 +1715,18 @@ hcl_server_t* hcl_server_open (hcl_mmgr_t* mmgr, hcl_oow_t xtnsize, hcl_server_p | |||||||
| 	pthread_mutex_init (&server->tmr_mutex, HCL_NULL); | 	pthread_mutex_init (&server->tmr_mutex, HCL_NULL); | ||||||
| 	pthread_mutex_init (&server->log_mutex, HCL_NULL); | 	pthread_mutex_init (&server->log_mutex, HCL_NULL); | ||||||
|  |  | ||||||
|  | 	/* the dummy hcl is used for this server to perform primitive operations | ||||||
|  | 	 * such as getting system time or logging. so the heap size doesn't  | ||||||
|  | 	 * need to be changed from the tiny value set above. */ | ||||||
|  | 	hcl_setoption (server->dummy_hcl, HCL_LOG_MASK, &server->cfg.logmask); | ||||||
|  | 	hcl_setcmgr (server->dummy_hcl, server->cmgr); | ||||||
|  | 	hcl_getoption (server->dummy_hcl, HCL_TRAIT, &trait); | ||||||
|  | #if defined(HCL_BUILD_DEBUG) | ||||||
|  | 	if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_GC) trait |= HCL_DEBUG_GC; | ||||||
|  | 	if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_BIGINT) trait |= HCL_DEBUG_BIGINT; | ||||||
|  | #endif | ||||||
|  | 	hcl_setoption (server->dummy_hcl, HCL_TRAIT, &trait); | ||||||
|  |  | ||||||
| 	return server; | 	return server; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -2083,10 +2096,33 @@ int hcl_server_setoption (hcl_server_t* server, hcl_server_option_t id, const vo | |||||||
| 	{ | 	{ | ||||||
| 		case HCL_SERVER_TRAIT: | 		case HCL_SERVER_TRAIT: | ||||||
| 			server->cfg.trait = *(const unsigned int*)value; | 			server->cfg.trait = *(const unsigned int*)value; | ||||||
|  | 			if (server->dummy_hcl) | ||||||
|  | 			{ | ||||||
|  | 				/* setting this affects the dummy hcl immediately. | ||||||
|  | 				 * existing hcl instances inside worker threads won't get  | ||||||
|  | 				 * affected. new hcl instances to be created later  | ||||||
|  | 				 * is supposed to use the new value */ | ||||||
|  | 				unsigned int trait; | ||||||
|  |  | ||||||
|  | 				hcl_getoption (server->dummy_hcl, HCL_TRAIT, &trait); | ||||||
|  | 			#if defined(HCL_BUILD_DEBUG) | ||||||
|  | 				if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_GC) trait |= HCL_DEBUG_GC; | ||||||
|  | 				if (server->cfg.trait & HCL_SERVER_TRAIT_DEBUG_BIGINT) trait |= HCL_DEBUG_BIGINT; | ||||||
|  | 			#endif | ||||||
|  | 				hcl_setoption (server->dummy_hcl, HCL_TRAIT, &trait); | ||||||
|  | 			} | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
| 		case HCL_SERVER_LOG_MASK: | 		case HCL_SERVER_LOG_MASK: | ||||||
| 			server->cfg.logmask = *(const unsigned int*)value; | 			server->cfg.logmask = *(const unsigned int*)value; | ||||||
|  | 			if (server->dummy_hcl)  | ||||||
|  | 			{ | ||||||
|  | 				/* setting this affects the dummy hcl immediately. | ||||||
|  | 				 * existing hcl instances inside worker threads won't get  | ||||||
|  | 				 * affected. new hcl instances to be created later  | ||||||
|  | 				 * is supposed to use the new value */ | ||||||
|  | 				hcl_setoption (server->dummy_hcl, HCL_LOG_MASK, value); | ||||||
|  | 			} | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
| 		case HCL_SERVER_WORKER_STACK_SIZE: | 		case HCL_SERVER_WORKER_STACK_SIZE: | ||||||
|  | |||||||
| @ -1676,7 +1676,7 @@ int main (int argc, char* argv[]) | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	{ | 	{ | ||||||
| 		int trait = 0; | 		unsigned int trait = 0; | ||||||
|  |  | ||||||
| 		/*trait |= HCL_NOGC;*/ | 		/*trait |= HCL_NOGC;*/ | ||||||
| 		trait |= HCL_AWAIT_PROCS; | 		trait |= HCL_AWAIT_PROCS; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user