dlfcn wordset

description

-- Words for dynmaic loading of code modules

Copyright (C) Tektronix, Inc. 1998 - 2001. All rights reserved.

description: This file exports a set of system words for dynamic loading of code modules.

FORTH

(LOADM) ( .. )();
as:"paren-loadm";

ordinary primitive (LOADM)

an executable word (no special usage info)

or wrapper call around p4_paren_loadm

FORTH

LOADM ( 'filename' -- )();
p4:"loadm";

dlmap the shared object (or share an already mapped object) and run the per-thread initialization code. This is the user-convenient function, otherwise use (LOADM)

 simulate:
   : LOADM  BL WORD   
     ((IS_MODULE_LOADED)) IF EXIT THEN 
     HERE (LOADM)  0= IF ." -- load failed: " HERE COUNT TYPE CR THEN ;
 
FORTH
LOCAL-DLSYM ( [symbolname] -- address )exec-only(); 
 ;

lookup the symbol that follows and leave the address (or null)

FORTH
LOCAL-DLCALL ( .. )(); 
 ;

immediate primitive LOCAL-DLCALL

an executable word (no special usage info)

or wrapper call around p4_local_dlcall

FORTH

DLSYM ( .. )();
as:"dlsym";

obsolete immediate DLSYM

is doing the same as LOCAL-DLSYM

This word should be replaced. It will be deleted in the near future. Instead use the (newer) synonym word given above.

FORTH

DLCALL ( .. )();
as:"dlcall";

obsolete immediate DLCALL

is doing the same as LOCAL-DLCALL

This word should be replaced. It will be deleted in the near future. Instead use the (newer) synonym word given above.

EXTENSIONS

CALL-C ( .. )();
as:"call-minus-c";

ordinary primitive CALL-C

an executable word (no special usage info)

or wrapper call around p4_call_c

EXTENSIONS

USELIBRARY ( .. )();
as:"uselibrary";

ordinary primitive USELIBRARY

an executable word (no special usage info)

or wrapper call around p4_uselibrary

EXTENSIONS

lt_dlinit ( -- ior )();
p4:"lt-dlinit";

initialiize library, usually open the program itself so that its handles can be found under "0"

EXTENSIONS
lt_dlopenext ( name-ptr,len -- handle-ptr|0 )(); 
 ;

walk the searchpath for dlopen and try to open a binary module under the given name with the usual file extension for the current system.

EXTENSIONS
lt_dlsym ( name-ptr,len handle -- symbol-addr|0)(); 
 ;

try to find the name in the binary module denoted by its handle .. if handle is null, use the main body of the program

EXTENSIONS
lt_dlclose ( handle -- ior )(); 
 ;

close handle that was returned by lt_dlopenext

EXTENSIONS
lt_dlerror ( -- z-string* )(); 
 ;

returns string describing the last dlerror as for lt_dlopenext and lt_dlsym