THREAD_LOCAL Logger
svn: r17016
This commit is contained in:
parent
958e3418aa
commit
2599cf95f8
|
@ -216,6 +216,7 @@ typedef struct Thread_Local_Variables {
|
|||
unsigned long current_total_allocation_;
|
||||
struct gmp_tmp_stack gmp_tmp_xxx_;
|
||||
struct gmp_tmp_stack *gmp_tmp_current_;
|
||||
struct Scheme_Logger *scheme_main_logger_;
|
||||
} Thread_Local_Variables;
|
||||
|
||||
#if defined(IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS)
|
||||
|
@ -398,6 +399,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL;
|
|||
#define current_total_allocation XOA (scheme_get_thread_local_variables()->current_total_allocation_)
|
||||
#define gmp_tmp_xxx XOA (scheme_get_thread_local_variables()->gmp_tmp_xxx_)
|
||||
#define gmp_tmp_current XOA (scheme_get_thread_local_variables()->gmp_tmp_current_)
|
||||
#define scheme_main_logger XOA (scheme_get_thread_local_variables()->scheme_main_logger_)
|
||||
|
||||
/* **************************************** */
|
||||
|
||||
|
|
|
@ -439,6 +439,7 @@ static Scheme_Env *place_instance_init_post_kernel() {
|
|||
}
|
||||
scheme_init_error_escape_proc(NULL);
|
||||
scheme_init_print_buffers_places();
|
||||
scheme_init_logger();
|
||||
scheme_init_eval_places();
|
||||
scheme_init_regexp_places();
|
||||
scheme_init_stx_places();
|
||||
|
@ -453,6 +454,7 @@ static Scheme_Env *place_instance_init_post_kernel() {
|
|||
scheme_init_port_config();
|
||||
scheme_init_port_fun_config();
|
||||
scheme_init_error_config();
|
||||
scheme_init_logger_config();
|
||||
#ifndef NO_SCHEME_EXNS
|
||||
scheme_init_exn_config();
|
||||
#endif
|
||||
|
|
|
@ -50,8 +50,7 @@ void (*scheme_console_output)(char *str, long len);
|
|||
|
||||
static int init_syslog_level = INIT_SYSLOG_LEVEL;
|
||||
static int init_stderr_level = SCHEME_LOG_ERROR;
|
||||
Scheme_Logger *scheme_main_logger;
|
||||
static void init_logger_config();
|
||||
THREAD_LOCAL_DECL(static Scheme_Logger *scheme_main_logger);
|
||||
|
||||
/* readonly globals */
|
||||
const char *scheme_compile_stx_string = "compile";
|
||||
|
@ -589,7 +588,13 @@ void scheme_init_error(Scheme_Env *env)
|
|||
scheme_add_evt(scheme_log_reader_type, (Scheme_Ready_Fun)log_reader_get, NULL, NULL, 1);
|
||||
|
||||
REGISTER_SO(scheme_def_exit_proc);
|
||||
REGISTER_SO(default_display_handler);
|
||||
REGISTER_SO(emergency_display_handler);
|
||||
|
||||
scheme_def_exit_proc = scheme_make_prim_w_arity(def_exit_handler_proc, "default-exit-handler", 1, 1);
|
||||
default_display_handler = scheme_make_prim_w_arity(def_error_display_proc, "default-error-display-handler", 2, 2);
|
||||
emergency_display_handler = scheme_make_prim_w_arity(emergency_error_display_proc, "emergency-error-display-handler", 2, 2);
|
||||
|
||||
|
||||
REGISTER_SO(def_err_val_proc);
|
||||
def_err_val_proc = scheme_make_prim_w_arity(def_error_value_string_proc, "default-error-value->string-handler", 2, 2);
|
||||
|
@ -605,14 +610,6 @@ void scheme_init_error(Scheme_Env *env)
|
|||
info_symbol = scheme_intern_symbol("info");
|
||||
debug_symbol = scheme_intern_symbol("debug");
|
||||
|
||||
{
|
||||
REGISTER_SO(scheme_main_logger);
|
||||
scheme_main_logger = make_a_logger(NULL, NULL);
|
||||
scheme_main_logger->syslog_level = init_syslog_level;
|
||||
scheme_main_logger->stderr_level = init_stderr_level;
|
||||
}
|
||||
init_logger_config();
|
||||
|
||||
REGISTER_SO(arity_property);
|
||||
{
|
||||
Scheme_Object *guard;
|
||||
|
@ -625,27 +622,29 @@ void scheme_init_error(Scheme_Env *env)
|
|||
scheme_init_error_config();
|
||||
}
|
||||
|
||||
static void init_logger_config()
|
||||
void scheme_init_logger()
|
||||
{
|
||||
scheme_set_root_param(MZCONFIG_LOGGER, (Scheme_Object *)scheme_main_logger);
|
||||
REGISTER_SO(scheme_main_logger);
|
||||
scheme_main_logger = make_a_logger(NULL, NULL);
|
||||
scheme_main_logger->syslog_level = init_syslog_level;
|
||||
scheme_main_logger->stderr_level = init_stderr_level;
|
||||
}
|
||||
|
||||
Scheme_Logger *scheme_get_main_logger() {
|
||||
return scheme_main_logger;
|
||||
}
|
||||
|
||||
void scheme_init_error_config(void)
|
||||
{
|
||||
init_logger_config();
|
||||
|
||||
scheme_set_root_param(MZCONFIG_EXIT_HANDLER, scheme_def_exit_proc);
|
||||
|
||||
REGISTER_SO(default_display_handler);
|
||||
REGISTER_SO(emergency_display_handler);
|
||||
|
||||
default_display_handler = scheme_make_prim_w_arity(def_error_display_proc, "default-error-display-handler", 2, 2);
|
||||
emergency_display_handler = scheme_make_prim_w_arity(emergency_error_display_proc, "emergency-error-display-handler", 2, 2);
|
||||
|
||||
scheme_set_root_param(MZCONFIG_ERROR_DISPLAY_HANDLER, default_display_handler);
|
||||
scheme_set_root_param(MZCONFIG_ERROR_PRINT_VALUE_HANDLER, def_err_val_proc);
|
||||
}
|
||||
|
||||
void scheme_init_logger_config() {
|
||||
scheme_set_root_param(MZCONFIG_LOGGER, (Scheme_Object *)scheme_main_logger);
|
||||
}
|
||||
|
||||
static void
|
||||
scheme_inescapeable_error(const char *a, const char *b)
|
||||
{
|
||||
|
|
|
@ -235,6 +235,9 @@ void scheme_init_fun_places(void);
|
|||
void scheme_init_sema_places(void);
|
||||
void scheme_init_gmp_places(void);
|
||||
void scheme_init_print_global_constants(void);
|
||||
void scheme_init_logger(void);
|
||||
Scheme_Logger *scheme_get_main_logger(void);
|
||||
void scheme_init_logger_config(void);
|
||||
|
||||
void register_network_evts();
|
||||
|
||||
|
@ -2944,8 +2947,6 @@ typedef struct Scheme_Log_Reader {
|
|||
Scheme_Object *head, *tail;
|
||||
} Scheme_Log_Reader;
|
||||
|
||||
extern Scheme_Logger *scheme_main_logger;
|
||||
|
||||
char *scheme_optimize_context_to_string(Scheme_Object *context);
|
||||
|
||||
void scheme_write_proc_context(Scheme_Object *port, int print_width,
|
||||
|
|
|
@ -7408,7 +7408,8 @@ static void done_with_GC()
|
|||
#ifdef MZ_PRECISE_GC
|
||||
static void inform_GC(int major_gc, long pre_used, long post_used)
|
||||
{
|
||||
if (scheme_main_logger) {
|
||||
Scheme_Logger *logger = scheme_get_main_logger();
|
||||
if (logger) {
|
||||
/* Don't use scheme_log(), because it wants to allocate a buffer
|
||||
based on the max value-print width, and we may not be at a
|
||||
point where parameters are available. */
|
||||
|
@ -7422,10 +7423,7 @@ static void inform_GC(int major_gc, long pre_used, long post_used)
|
|||
end_this_gc_time - start_this_gc_time);
|
||||
buflen = strlen(buf);
|
||||
|
||||
scheme_log_message(scheme_main_logger,
|
||||
SCHEME_LOG_DEBUG,
|
||||
buf, buflen,
|
||||
NULL);
|
||||
scheme_log_message(logger, SCHEME_LOG_DEBUG, buf, buflen, NULL);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user