From: Fabrice Frances Newsgroups: comp.os.msdos.djgpp Subject: Losing interrupts under NT or what ? Date: Fri, 24 Jan 1997 12:14:10 +0100 Organization: Ecole Nationale Superieure d'Ingenieurs des Constructions Aeronautiques Lines: 24 Message-ID: <32E89982.5C11EFE7@ensica.fr> NNTP-Posting-Host: linuxfly.ensica.fr Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp I have a program reprogramming the timer's interrupt interval to 50 Hz and I catch the Timer's interrupt in order to synchronize my program's behavior. It works fine with DPMI hosts like CWSDPMI, or Win3.1, Win95, OS/2 Warp but not under NT 4.0. I think I don't lose interrupts (the program is always in protected mode, but I have even written a real mode wrapper to be sure), though I'm getting a 1.4 time factor... where does it come from ? Does NT virtualize the timer IO ports (40h to 43h) and my 50 Hz is not taken into account ? Or does the problem come from the multitasking ? (ie I don't receive the interrupts which occur while another task is running, and my program is running in "virtual time"... under linux I can chose between SIGVTALRM and SIGALRM, is there any equivalent for djgpp ?). Also, I have followed all the rules to make the code strong (locking data/code regions, interrupt handlers written in assembly with Gas, etc) but the program still doesn't start at the first time (it gets a SIGSEGV), and runs ok if I launch it a second time... is there any known tricky thing with NT beyond djgpp's FAQ ? Thanks in advance for any help, -- main(){int i,j,k,l,m,n,p;char *s="@_DO AT AJQ@AQQ AT OQO@A_Q AT AQQ@AQO@@@@ONN_QDQAQDAAODAOEDAAIDQAQNN_@@@@";for(j=0 ;j<16;j++)for(l=0;p=j%8,m=l-7+p,i=m/6,n=j*4+i,k=1<