Mail Archives: djgpp/1996/05/07/23:34:15
fnunez AT cs DOT uct DOT ac DOT za (Fabian Nunez) wrote:
>In <318b9699 DOT sandmann AT clio DOT rice DOT edu> Charles Sandmann <sandmann AT clio DOT rice DOT edu> writes:
>>src/dxe/dxegen.doc is the only thing I ever wrote about it - and I
>>never enhanced the docs or put them into the info format, sorry.
>>I really wrote it for loadable graphics device drivers and emu387
>>support, neither which needed I/O, with a goal to have the tiniest
>>footprint possible.
>I tried to write a loadable VESA 2 module using a DXE and all I got was
>segmentation violations. The code worked fine if statically linked, so
>my guess is that DXE's have problems talking to the __dpmi and _go32_dpmi
>functions, same as with printf, etc. Any ideas for a workaround, or have I
>found a bug? (BTW, I looked at the old '94 version of DLL's for DJGPP V1,
>and it allowed for sharing variables and functions with the main executable -
>why was this removed from DXE's? it seems like a good idea to me)
Charles answered this above. The code for loading DXE's is always
linked into every v2 executable, so there was a priority on getting
the size small.
One of the easiest ways to make a DXE work is to not use any library
functions. If you do use some functions that won't work then pass them
as pointers to your DXE when it loads. A very general approach is to
setup an array of function pointers that you pass to an initialisation
function in the DXE.
DLL support is a hard subject. My personal opinion is that it should
wait for someone to write Win32(s) support, hence much more standard
DLLs.
Malcolm
- Raw text -