From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maurilio Longo Subject: Re: Dosemu and clipper applications eating all CPU Date: Mon, 15 Mar 2004 12:53:41 +0100 Sender: linux-msdos-owner@vger.kernel.org Message-ID: <40559945.CCB3126A@libero.it> References: <40523AA4.8040304@aknet.ru> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: List-Id: Content-Type: text/plain; charset="us-ascii" To: linux mailing list Stas, it probably depends on the linker used to create the clipper app, here we use blinker to create a protect mode application, and this application calls src/base/async/int.c function ms_dos case 0x2C. In 1.1.3 (which is the dosemu we use) I had to make the changes I told you, and I use hog_threshold(0) to have the clipper app to give back all the time it doesn't use. But, on OS/2 I have the possibility to give back the rest of my cpu time slice, while in linux it usleep()s a fixed amount of time and this makes the program sluggish without my changes. regards. Stas Sergeev ha scritto: > Hello. > > Maximiliano Curia wrote: > > Yes, that dosemu doesn't detect the clipper idle calls. > OK, some nice guy at SF finally > provided a clipper-based program > for testing (that's why I like > the SF tracker) and I was able to > have a look at what it does myself. > Indeed it calls int21h/1Ch, although > so infrequently, that it doesn't > seem to be usefull here. > It calls int16h/11h a bit more > frequently, although also rather > rarely. > The attached patch makes it to > release the CPU a little, although > perhaps still not enough. > Also note that clipper will work > in protected mode only in dosemu > 1.3.1. On any other versions it > can work in real mode only, which > may have a different CPU loads. > > ------------------------------------------------------------------------------ > --- src/base/bios/int16.c Sat Mar 13 00:40:05 2004 > +++ src/base/bios/int16.c Sat Mar 13 01:15:29 2004 > @@ -126,7 +126,7 @@ > trigger1=0; > if(trigger1 >= config.hogthreshold*500) { > if(oldESP==_ESP) { > - if (++trigger >= config.hogthreshold*20) { > + if (trigger++ >= (config.hogthreshold - 1) * 20) { > usleep(INT2F_IDLE_USECS); > trigger=0; > keyptr = get_key(extended); > > ------------------------------------------------------------------------------ > Scanned by evaluation version of Dr.Web antivirus Daemon > http://drweb.ru/unix/ -- __________ | | | |__| md2520@mclink.it |_|_|_|____| Team OS/2 Italia