/kernel/trunk/docs/sysfuncr.txt |
---|
293,6 → 293,9 |
ecx = -1 - получить информацию о текущем потоке |
Возвращаемое значение: |
* eax = максимальный номер слота потока |
но, если указатель в ebx недопустимый, например, |
регион [ebx, ebx + 0x4C) пересекается с памятью ядра, |
то тогда функция возвращает -1 |
* буфер, на который указывает ebx, содержит следующую информацию: |
* +0: dword: использование процессора (сколько тактов в секунду |
уходит на исполнение именно этого потока) |
/kernel/trunk/docs/sysfuncs.txt |
---|
283,6 → 283,9 |
ecx = -1 - get information on the current thread |
Returned value: |
* eax = maximum number of the slot of a thread |
but if pointer in ebx is illegal, for example, |
[ebx, ebx + 0x4C) region intersects with kernel memory, |
then function returns -1 |
* buffer pointed to by ebx contains the following information: |
* +0: dword: usage of the processor (how many time units |
per second leaves on execution of this thread) |
/kernel/trunk/kernel.asm |
---|
3159,6 → 3159,14 |
; +26 dword used mem |
; +30 dword PID , process idenfification number |
; |
; if given memory address belongs to kernel then error |
push ebx |
mov eax, ebx |
mov ebx, 0x4C |
call is_region_userspace |
pop ebx |
test eax, eax |
jz .addr_error |
cmp ecx, -1 ; who am I ? |
jne .no_who_am_i |
3249,6 → 3257,10 |
mov [esp+32], eax |
ret |
.addr_error: ; if given memory address is illegal |
mov eax, -1 |
ret |
align 4 |
sys_clock: |
cli |