[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