mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-11-26 02:39:55 +03:00
Fix sf9 to ignore slot 0
It used to read uninitialized data at SLOT_BASE[0]. git-svn-id: svn://kolibrios.org@9964 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
259bd4349f
commit
0572b0fbf6
@ -356,7 +356,7 @@ picture rb Xsize*Ysize*4 ; 32 бита
|
||||
для которого:
|
||||
* окно находится внизу оконного стэка, поля +4 и +6 содержат
|
||||
значение 1
|
||||
* имя процесса - "OS/IDLE" (дополненное пробелами)
|
||||
* имя процесса - "IDLE" (дополненное пробелами)
|
||||
* адрес процесса в памяти равен 0, размер используемой памяти
|
||||
16 Mb (0x1000000)
|
||||
* PID=1
|
||||
@ -366,7 +366,9 @@ picture rb Xsize*Ysize*4 ; 32 бита
|
||||
* время выполнения складывается из времени, уходящего на
|
||||
собственно работу, и времени простоя в ожидании прерывания
|
||||
(которое можно получить вызовом подфункции 4 функции 18).
|
||||
* Начиная со слота 2, размещаются обычные приложения.
|
||||
* Слот 2 (и некоторые другие) соответствуют специальным потокам
|
||||
операционной системы, для которых:
|
||||
* имя процесса - "OS" (дополненное пробелами)
|
||||
* Обычные приложения размещаются в памяти по адресу 0
|
||||
(константа ядра std_application_base_address).
|
||||
Наложения не происходит, поскольку у каждого процесса своя
|
||||
|
@ -344,7 +344,7 @@ Remarks:
|
||||
* Slot 1 corresponds to special system thread, for which:
|
||||
* the window is in the bottom of the window stack, the fields
|
||||
+4 and +6 contain value 1
|
||||
* name of the process - "OS/IDLE" (supplemented by spaces)
|
||||
* name of the process - "IDLE" (supplemented by spaces)
|
||||
* address of the process in memory is 0, size of used memory is
|
||||
16 Mb (0x1000000)
|
||||
* PID=1
|
||||
@ -354,7 +354,8 @@ Remarks:
|
||||
* the execution time adds of time leaving on operations itself
|
||||
and idle time in waiting for interrupt (which can be got by call
|
||||
to subfunction 4 of function 18).
|
||||
* Beginning from slot 2, the normal applications are placed.
|
||||
* Slot 2 (and some others) correspond to system threads, for which:
|
||||
* name of the thread - "OS" (supplemented by spaces)
|
||||
* The normal applications are placed in memory at the address
|
||||
0 (kernel constant 'std_application_base_address').
|
||||
There is no intersection, as each process has its own page table.
|
||||
|
@ -2432,6 +2432,8 @@ sys_cpuusage:
|
||||
.no_who_am_i:
|
||||
cmp ecx, max_processes
|
||||
ja .nofillbuf
|
||||
test ecx, ecx ; slot 0 is empty, kernel threads start from 1
|
||||
jz .nofillbuf
|
||||
|
||||
; +4: word: position of the window of thread in the window stack
|
||||
mov ax, [WIN_STACK + ecx * 2]
|
||||
|
Loading…
Reference in New Issue
Block a user