Tvůrce webu je i pro tebe! Postav třeba web. Bez grafika. Bez kodéra. Hned.
wz

<< Zpět - ^ Nahoru - Další >>


>>> stránka zatím jen připravena k editaci <<<

TASK - Úloha

Soubory: INCLUDE\KERNEL\TASK.INC, KERNEL\TASK.ASM.

Datové struktury a makra


%ifdef MINI
TASK_SIZE	EQU	1000h		; task-state segment size (4 KB)
TASK_SHIFT	EQU	14		; number of bits of task-state segment
%else
TASK_SIZE	EQU	4000h		; task-state segment size (16 KB)
TASK_SHIFT	EQU	14		; number of bits of task-state segment
%endif

TASK_MASK	EQU	~(TASK_SIZE-1)	; mask of task address

; ------------- Macro - get current task (%1 = destination register)

%macro		CURRENT 1
		mov	%1,TASK_MASK	; prepare mask
		and	%1,esp		; get thread info
%endmacro

Makro CURRENT vyhledá popisovač aktivní úlohy. Parametrem makra je jméno registru, ve kterém bude navrácen ukazatel na popisovač úlohy TASK. Při vyhledání popisovače se využívá skutečnosti, že zásobník aktuální úlohy je umístěn ve struktuře popisovače úlohy a ten je zarovnán na adresu násobku své velikosti. K vyhledání popisovače aktuální úlohy proto postačí zarovnat ukazatel zásobníku na násobek velikosti popisovače úlohy (běžně 16 KB popř. 4 KB pro mini verzi jádra).

 


<< Zpět - ^ Nahoru - Další >>