/******************** *** EGC_DYNLIB.C *** ********************/ #include "egc_dynlib.h" #include "eif_sig.h" extern void egc_init_plug(); static short is_rt_initialized = 0; void init_rt (void) { struct ex_vect *exvect; jmp_buf exenv; int argc = 1; char *argv[] = {"",""}; if (is_rt_initialized == 0) { is_rt_initialized = 1; eif_alloc_init(); #ifdef EIF_THREADS eif_thr_init_root (); #endif { GTCX egc_init_plug(); initsig(); initstk(); exvect = exset((char *) 0, 0, (char *) 0); exvect->ex_jbuf = &exenv; if (setjmp(exenv)) failure(); eif_rtinit(argc, argv, (char **)0); if (root_obj == (char *)0) root_obj = cmalloc(1); } } } void reclaim_rt (void) { if (is_rt_initialized == 1) { reclaim(); is_rt_initialized = 0; } }