/* PROGRAMM ZUR ERMITTLUNG UND ANZEIGE DER CPU-AUSLASTUNG */ /* KONTAKT: KIO ! --> KIO-Box Erlangen (09131) 20 7996 - 300Bd 8N1 GÜNTER WOIGK GABELSBERGERSTR. 5 8520 ERLANGEN */;/* STARTEN MIT: P dateiname--LOAD--CPU STOPPEN MIT: UNLOAD CPU* AB RTOS VS. 2.0 -- WG. EINBAUFUNKTION 'TEXT' */ SC=$2A2; MODULE CPU; PROBLEM; SPC TEXT ENTRY GLOBAL; DCL COUNT FIXED(31); IDLE:TASK PRIO 255 RESIDENT; /* BRAETER-TASK */ REPEAT;COUNT=COUNT+1;END; /* ZAEHLT IN JEDER FREIEN SEKUNDE ... */ END; /* ANZEIGEN-TASK: ACHTUNG: ANZEIGE WIRD NICHT MEHR AKTUALISIERT, WENN EIN ANDERER DAUERBRAETER GESTARTET WIRD, DESSEN PRIO >= 5 IST ! ERHOEHEN DER PRIO DIESER TASK HIER IST ABER NICHT EMPFEHLENSWERT, DA SIE AUCH IMMER EIN GANZES WEILCHEN RECHNET, UND DESHALB NICHT ZU HOCH PRIORISIERT SEIN SOLLTE, UM NICHT ANDERE, ZEITKRITISCHE (INTERRUPT-EINGEPLANTE O.AE.) TASKS ZU BEHINDERN ! */ CPU:TASK PRIO 5; DCL COUNT0 FIXED(31),TEXTZEILE CHAR(10) INIT (' CPU =...%'); REPEAT; COUNT=0; ACTIVATE IDLE; AFTER 0.2 SEC RESUME; /* NA, WIE WEIT KOMMT IDLE ? */ TERMINATE IDLE; IF COUNT>COUNT0 THEN COUNT0=COUNT;FIN; /* EICHEN */ COUNT=COUNT0-COUNT+COUNT0//200; /* RUNDEN */ FOR I FROM 7 TO 9 REPEAT /* ZAHL IN STRING EINFUEGEN */ IF COUNT>=COUNT0 OR I>7 THEN TEXTZEILE.CHAR(I)=TOCHAR((COUNT//COUNT0)+48); ELSE TEXTZEILE.CHAR(I)=' '; FIN; COUNT=(COUNT REM COUNT0) *10; END; CALL TEXT(560,0,1,TEXTZEILE); /* UND STRING AUSGEBEN */ END; END; MODEND;