[OSy] Par dotazu k 2. zadani

Martin Kruliš bobrik at matfyz.cz
Tue Nov 21 18:19:52 CET 2006


> To bylo diskutovano na cviceni, staci pocitat s max. 512MB
> (mimochodem, KSEG0 a ! jsou podle mne mapovany oba od fyzicke adresy
> 0, cili pres sebe).
Dobre. Diky.
>
>> - musi byt adresy @src a @dest a delka @len ve funckic:
>>     int copy_from_thread (thread_t thr, void * dest, const void * src,
>> const size_t len);
>>     int copy_to_thread (thread_t thr, void * dest, const void * src,
>> const size_t len);
>> zarovnane na min. velikost stranky - tzn 4kB, nebo tyto funkce umi
>> kopirovat i nezarovnane bloky dat? Co se ma stat v pripade, ze v jednom
>> z vlaken neni cast kopirovaneho bloku alokovana (pomoci vmalloc). Mame
>> vratit chybovy navratovy kod, nebo vlakno zastrelit, jako kdyz se
>> pokousi sahat na nealokovanou adresu?
>
> Pokud jsem to pochopil spravne, copy_from_thread a copy_to_thread maji
> naopak alokovat bloky pomoci vmalloc pro sve kopie a vracet chybu,
> pokud uz na zadane dest adrese neco je. Jinak vmalloc a vsechny
> ostatni rutiny, ktere delame, pracuji jen se zarvnanymi bloky
> zarovnane velikosti.
Aha, takze mohou vratit i ENOMEM, kdyz neni dost pameti a EINVAL pokud 
se prekryvaji, nebo naopak ve zdrojovem bloku chybi zaalokovane stranky.
Jinak u vsech ostatnich bylo napsano, ze jsou zarovnane, ale nebyl jsem 
si jisty, jestli to plati i na tyhle.
>
>
> Disclaimer: neberte moje odpovedi za autoritativni :D
affirmative :P

Diky za odpoved.
MK



More information about the NSWI004 mailing list