[OSy] Thread API

Vlastimil Babka babka at dsrg.mff.cuni.cz
Tue Oct 28 21:39:05 CET 2008


Ersin wrote:
> Preji pekny svatecni vecer,
>   
Dobry vecer,
> uz jsem jeden mail na tohle tema posilal, ale ted jej bohuzel poslu jeste jednou, upresneny.
>
> Otazka tedy zni - co mam vracet funkce thread_get_current() ? Ma vracet pointer na strukturu aktualniho vlakna, nebo hodnotou primo tuto strukturu?
>
>   
V zadani se mimo jine pise:

Druhy typ rozhrani skryva implementacni detaily vice, tedy napriklad
      to, ze pracuje s ukazateli. Uzivateli poskytuje obecny typ, ktery
      slouzi k identifikaci objektu, at uz je implementaci rozhrani chapan
      jako ukazatel, nebo jako identifikator.

...

Uvedeny typ ma i rozhrani k vlaknum operacniho systemu


Cili thread_t vraceny funkci thread_get_current() je pouze identifikator
objektu (pointer nebo nejaky index), jak jiz psal kolega Keznikl, ne
cela struktura. Uznavam ze muze byt matouci ze struktura v Kalistu se
jmenuje stejne, ale jak bylo jiz receno Kalisto rozhodne neberte jako
svate a nemenne, s jeho upravami aby se vyhovelo zadani se pocita.
> V testech (thread2/test.c) se vyskytuje nasledujici kus kodu:
>
> 	thread_t thread;
>
> 	thread = thread_get_current ();
> 	printk ("Thread %p started...\n", thread); 
>
> thread_get_current() by tedy mela vracet primo hodnotou onu strukturu, ale - je to urcite v poradku?
> A opravdu se potom schvalne vypisou prvni 4 byte teto struktury v sestnastkove soustave? K cemu to je, vypisovat tyhle 4 byte?
>   
Tady test trochu nad ramec zadani predpoklada ze thread_t je ve
skutecnosti pointer, ale jedna se v podstate jen o debugovaci vypis,
takze pokud si typ thread_t nadefinujete jako index ktery by nesel
typove pouzit v direktive %p, neni problem ji zmenit.
> Stejna otazka se da pouzit temer na vsechny funkce pracujici s vlakny. S cim tedy maji vsechny pracovat?
>   
Snad uz je to jasnejsi.

Hezky vecer,
Vlastimil Babka





More information about the NSWI004 mailing list