2005-04-09 18:30:46 -04:00
|
|
|
typedef struct {
|
|
|
|
CELL header;
|
|
|
|
/* tagged string */
|
|
|
|
CELL path;
|
|
|
|
/* OS-specific handle */
|
|
|
|
void* dll;
|
|
|
|
} DLL;
|
|
|
|
|
2005-08-15 23:34:10 -04:00
|
|
|
INLINE DLL *untag_dll(CELL tagged)
|
2005-08-15 15:34:00 -04:00
|
|
|
{
|
|
|
|
type_check(DLL_TYPE,tagged);
|
|
|
|
return (DLL*)UNTAG(tagged);
|
|
|
|
}
|
2005-04-09 18:30:46 -04:00
|
|
|
|
2005-04-30 01:13:58 -04:00
|
|
|
void init_ffi(void);
|
|
|
|
|
2005-08-15 15:34:00 -04:00
|
|
|
void ffi_dlopen(DLL *dll, bool error);
|
|
|
|
void *ffi_dlsym(DLL *dll, F_STRING *symbol, bool error);
|
2005-04-09 18:30:46 -04:00
|
|
|
void ffi_dlclose(DLL *dll);
|
|
|
|
|
|
|
|
void primitive_dlopen(void);
|
|
|
|
void primitive_dlsym(void);
|
|
|
|
void primitive_dlclose(void);
|
|
|
|
|
|
|
|
void fixup_dll(DLL* dll);
|
|
|
|
void collect_dll(DLL* dll);
|