Call Sleep for int 0x2f function 0x1680 (IDLE CALL).
This commit is contained in:
parent
01c1466c67
commit
2a354d6d1b
|
@ -319,6 +319,18 @@ static void do_int2f_16( CONTEXT86 *context )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80: /* Release time-slice */
|
case 0x80: /* Release time-slice */
|
||||||
|
/* Linux sched_yield() still keeps burning CPU cycles
|
||||||
|
* if the current process is the only one in highest priority list
|
||||||
|
* (as Linux will immediately return to this process to waste
|
||||||
|
* more CPU cycles), so sched_yield() is essentially useless for us
|
||||||
|
* (poor API, if you ask me: its return code should indicate
|
||||||
|
* whether other processes did run in between, in order for us
|
||||||
|
* to be able to decide whether to do an additional Sleep() or not...)
|
||||||
|
* Thus we better unconditionally use a well-balanced Sleep()
|
||||||
|
* instead to really make sure the process calling int 0x2f/0x1680
|
||||||
|
* *doesn't* use 100% CPU...
|
||||||
|
*/
|
||||||
|
Sleep(55); /* just wait 55ms (one "timer tick") for now. */
|
||||||
AL_reg(context) = 0;
|
AL_reg(context) = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue