Mail Archives: djgpp/1995/09/28/23:58:03
Xref: | news-dnh.mv.net comp.os.msdos.djgpp:2272
|
Path: | news-dnh.mv.net!mv!news.sprintlink.net!in2.uu.net!usenet.eel.ufl.edu!col.hp.com!bubba.ucc.okstate.edu!wizard.uark.edu!engr.engr.uark.edu!alh
|
From: | ALAN L HIGHTOWER <alh AT engr DOT engr DOT uark DOT edu>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Locking mem under DPMI
|
Date: | Thu, 28 Sep 1995 21:01:04 -0500
|
Organization: | University of Arkansas
|
Lines: | 36
|
References: | <DFLDA9 DOT Hqp AT goodnet DOT com>
|
Nntp-Posting-Host: | engr.engr.uark.edu
|
To: | djgpp AT sun DOT soe DOT clarkson DOT edu
|
Dj-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Since a lot of different methods have been thrown around reguarding how
to lock a function under DPMI, I figure I'll through out another idea.
The most mentioned award goes to the
void start_mem( void ) {}
int foobar(...)
{
....
}
void end_mem( void ) {}
and use the function pointer to start/end_mem to pinpoint the memory
start and length of the functions that need locking.
But, as pointed out, this method can fail with static functions and with
optimizations turned on.
Would it be possible since most functions are long word aligned and
padded with NOP's to take the associated function pointer and scan along
long word boundaries till you hit an opcode for either a ret or iret?
How reliable is gcc in always generating an .align 4 directive? and how
reliable is it in creating functions with branches to a single ret as the
last opcode (as opposed to multiple rets)?
Last question, is there any reason preventing auto-locking of the
iret/callback wrappers and interrupt stack space in subsequent compiles
of libc.a? It seems that right after the malloc would be the perfect
place to go ahead and lock it. For the .beta3 release I went ahead and
patched the libc sources, are there any side effect I should be aware of?
Thanks, Alan.
- Raw text -