Add scheme_atexit c function.
This way programs can actually call atexit. (Otherwise atexit is frequently not provided in libc as a symbol.)
This commit is contained in:
parent
2f6c42f3c1
commit
a8fa5d4ebb
|
@ -63,6 +63,7 @@ scheme_close_managed
|
||||||
scheme_schedule_custodian_close
|
scheme_schedule_custodian_close
|
||||||
scheme_add_custodian_extractor
|
scheme_add_custodian_extractor
|
||||||
scheme_add_atexit_closer
|
scheme_add_atexit_closer
|
||||||
|
scheme_add_atexit
|
||||||
scheme_add_evt
|
scheme_add_evt
|
||||||
scheme_add_evt_through_sema
|
scheme_add_evt_through_sema
|
||||||
scheme_is_evt
|
scheme_is_evt
|
||||||
|
|
|
@ -63,6 +63,7 @@ scheme_close_managed
|
||||||
scheme_schedule_custodian_close
|
scheme_schedule_custodian_close
|
||||||
scheme_add_custodian_extractor
|
scheme_add_custodian_extractor
|
||||||
scheme_add_atexit_closer
|
scheme_add_atexit_closer
|
||||||
|
scheme_atexit
|
||||||
scheme_add_evt
|
scheme_add_evt
|
||||||
scheme_add_evt_through_sema
|
scheme_add_evt_through_sema
|
||||||
scheme_is_evt
|
scheme_is_evt
|
||||||
|
|
|
@ -80,6 +80,7 @@ EXPORTS
|
||||||
scheme_add_flush
|
scheme_add_flush
|
||||||
scheme_remove_flush
|
scheme_remove_flush
|
||||||
scheme_add_atexit_closer
|
scheme_add_atexit_closer
|
||||||
|
scheme_atexit
|
||||||
scheme_add_evt
|
scheme_add_evt
|
||||||
scheme_add_evt_through_sema
|
scheme_add_evt_through_sema
|
||||||
scheme_is_evt
|
scheme_is_evt
|
||||||
|
|
|
@ -77,6 +77,7 @@ scheme_flush_managed
|
||||||
scheme_add_flush
|
scheme_add_flush
|
||||||
scheme_remove_flush
|
scheme_remove_flush
|
||||||
scheme_add_atexit_closer
|
scheme_add_atexit_closer
|
||||||
|
scheme_atexit
|
||||||
scheme_add_evt
|
scheme_add_evt
|
||||||
scheme_add_evt_through_sema
|
scheme_add_evt_through_sema
|
||||||
scheme_is_evt
|
scheme_is_evt
|
||||||
|
|
|
@ -77,6 +77,7 @@ scheme_flush_managed
|
||||||
scheme_add_flush
|
scheme_add_flush
|
||||||
scheme_remove_flush
|
scheme_remove_flush
|
||||||
scheme_add_atexit_closer
|
scheme_add_atexit_closer
|
||||||
|
scheme_atexit
|
||||||
scheme_add_evt
|
scheme_add_evt
|
||||||
scheme_add_evt_through_sema
|
scheme_add_evt_through_sema
|
||||||
scheme_is_evt
|
scheme_is_evt
|
||||||
|
|
|
@ -172,6 +172,7 @@ MZ_EXTERN Scheme_Object *scheme_add_flush(Scheme_Plumber *p, Scheme_Object *proc
|
||||||
MZ_EXTERN void scheme_remove_flush(Scheme_Object *h);
|
MZ_EXTERN void scheme_remove_flush(Scheme_Object *h);
|
||||||
|
|
||||||
MZ_EXTERN void scheme_add_atexit_closer(Scheme_Exit_Closer_Func f);
|
MZ_EXTERN void scheme_add_atexit_closer(Scheme_Exit_Closer_Func f);
|
||||||
|
MZ_EXTERN int scheme_atexit(void (*func)(void));
|
||||||
|
|
||||||
MZ_EXTERN void scheme_add_evt(Scheme_Type type,
|
MZ_EXTERN void scheme_add_evt(Scheme_Type type,
|
||||||
Scheme_Ready_Fun ready,
|
Scheme_Ready_Fun ready,
|
||||||
|
|
|
@ -123,6 +123,7 @@ int (*scheme_flush_managed)(Scheme_Plumber *p, int catch_errors);
|
||||||
Scheme_Object *(*scheme_add_flush)(Scheme_Plumber *p, Scheme_Object *proc_or_port, int weak_flush);
|
Scheme_Object *(*scheme_add_flush)(Scheme_Plumber *p, Scheme_Object *proc_or_port, int weak_flush);
|
||||||
void (*scheme_remove_flush)(Scheme_Object *h);
|
void (*scheme_remove_flush)(Scheme_Object *h);
|
||||||
void (*scheme_add_atexit_closer)(Scheme_Exit_Closer_Func f);
|
void (*scheme_add_atexit_closer)(Scheme_Exit_Closer_Func f);
|
||||||
|
int (*scheme_atexit)(void (*func)());
|
||||||
void (*scheme_add_evt)(Scheme_Type type,
|
void (*scheme_add_evt)(Scheme_Type type,
|
||||||
Scheme_Ready_Fun ready,
|
Scheme_Ready_Fun ready,
|
||||||
Scheme_Needs_Wakeup_Fun wakeup,
|
Scheme_Needs_Wakeup_Fun wakeup,
|
||||||
|
|
|
@ -86,6 +86,7 @@
|
||||||
scheme_extension_table->scheme_add_flush = scheme_add_flush;
|
scheme_extension_table->scheme_add_flush = scheme_add_flush;
|
||||||
scheme_extension_table->scheme_remove_flush = scheme_remove_flush;
|
scheme_extension_table->scheme_remove_flush = scheme_remove_flush;
|
||||||
scheme_extension_table->scheme_add_atexit_closer = scheme_add_atexit_closer;
|
scheme_extension_table->scheme_add_atexit_closer = scheme_add_atexit_closer;
|
||||||
|
scheme_extension_table->scheme_atexit = scheme_atexit
|
||||||
scheme_extension_table->scheme_add_evt = scheme_add_evt;
|
scheme_extension_table->scheme_add_evt = scheme_add_evt;
|
||||||
scheme_extension_table->scheme_add_evt_through_sema = scheme_add_evt_through_sema;
|
scheme_extension_table->scheme_add_evt_through_sema = scheme_add_evt_through_sema;
|
||||||
scheme_extension_table->scheme_is_evt = scheme_is_evt;
|
scheme_extension_table->scheme_is_evt = scheme_is_evt;
|
||||||
|
|
|
@ -86,6 +86,7 @@
|
||||||
#define scheme_add_flush (scheme_extension_table->scheme_add_flush)
|
#define scheme_add_flush (scheme_extension_table->scheme_add_flush)
|
||||||
#define scheme_remove_flush (scheme_extension_table->scheme_remove_flush)
|
#define scheme_remove_flush (scheme_extension_table->scheme_remove_flush)
|
||||||
#define scheme_add_atexit_closer (scheme_extension_table->scheme_add_atexit_closer)
|
#define scheme_add_atexit_closer (scheme_extension_table->scheme_add_atexit_closer)
|
||||||
|
#define scheme_atexit (scheme_extension_table->scheme_atexit)
|
||||||
#define scheme_add_evt (scheme_extension_table->scheme_add_evt)
|
#define scheme_add_evt (scheme_extension_table->scheme_add_evt)
|
||||||
#define scheme_add_evt_through_sema (scheme_extension_table->scheme_add_evt_through_sema)
|
#define scheme_add_evt_through_sema (scheme_extension_table->scheme_add_evt_through_sema)
|
||||||
#define scheme_is_evt (scheme_extension_table->scheme_is_evt)
|
#define scheme_is_evt (scheme_extension_table->scheme_is_evt)
|
||||||
|
|
|
@ -1984,6 +1984,11 @@ void scheme_add_atexit_closer(Scheme_Exit_Closer_Func f)
|
||||||
cust_closers = scheme_make_raw_pair((Scheme_Object *)f, cust_closers);
|
cust_closers = scheme_make_raw_pair((Scheme_Object *)f, cust_closers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int scheme_atexit(void (*func)(void))
|
||||||
|
{
|
||||||
|
return atexit(func);
|
||||||
|
}
|
||||||
|
|
||||||
void scheme_schedule_custodian_close(Scheme_Custodian *c)
|
void scheme_schedule_custodian_close(Scheme_Custodian *c)
|
||||||
{
|
{
|
||||||
/* This procedure might be called by a garbage collector to register
|
/* This procedure might be called by a garbage collector to register
|
||||||
|
|
Loading…
Reference in New Issue
Block a user