From: j DOT aldrich6 AT genie DOT com Message-Id: <199607211646.AA145277587@relay1.geis.com> Date: Sun, 21 Jul 96 16:36:00 UTC 0000 To: bond AT ee DOT ubc DOT ca Cc: djgpp AT delorie DOT com Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Subject: Re: Interrupt overhead with DJ Reply to message 7820364 from BOND AT EE DOT UBC DOT C on 07/16/96 8:03PM >I understand that DJGPP programs run with the help of a DOS extender to >enable execution in a 32 bit protected address space under DOS. I'm >curious what overhead DJGPP's DOS extender imposes on programs in >general (I've been able to find no documentation on-line pertaining to >the functionality of DOS extenders). You are only partially correct: DJGPP does not use a DOS extender; it uses a DPMI host. The FAQ describes this in some detail; but basically, DJGPP programs use whatever DPMI is available when they run. If you are running under QEMM, 386Max, OS/2, Linux Dosemu, Win3.1, or Win95, they will detect and use those DPMI services; otherwise they will load and run the CWSDPMI program which comes with the DJGPP distribution. It loads itself as a DPMI host, but is not exactly an "extender" by the standards of DOS4GW or DJGPP v1.*'s go32. >In particular, I'd like to know what overhead is imposed by DJGPP's DOS >extender for interrupt handling (in GNAT Ada - although I can't see why >it should be any different in C). Well, since DJGPP runs in full 32-bit protected mode, the vast majority of interrupts are either handled by the DPMI host, or reflected to protected mode. This is the same no matter what DPMI you use; protected-mode interrupt handling is practically the same for every host. As I understand it, there is always some overhead in interrupt reflection, but it is possible to install a real-mode handler as well as a protected-mode one. The FAQ describes this in great detail, perhaps because of the large numbers of people who have asked about this very subject. :) John