Fájlrendszer kérdés

Rancz Lajos csiga at fosch.com
Fri May 19 09:00:59 CEST 2006


Helló!

Alapvetően csak az errno-val van gond. A POSIX 1. az errno-t egy 
globális változónak definiálta, ami több szál esetén nyilván necces. A 
POSIX 1.c már azt mondja, hogy szálanként kell megcsinálni az errno 
változót, úgy hogy a többi szál ne láthassa: "POSIX.1c redefines errno 
as a service that can access the per-thread error number as follows". Ez 
most akkor mit jelent? Pl ezt:
#define    errno    (ferror())

Ez jól működik if(errno == vmi) esetben, de mi van olyankor, ha a szoft 
pl. ilyet csinál:
errno = 0;

Teszünk rá?

Kösz,
Lajos


Moczik Gabor írta:
> Rancz Lajos wrote:
>   
>> Visszatérve az újrahívhatóság kérdésére: nem teljsen értem, hogy két 
>> szál hogyan tud egyszerre fájlokat elérni mert van statikus változó az 
>> errno. Ebben az esetben mutexet kell használni az alaklmazói programba? 
>> Csak a fájlrendszer fv. szintjén ezt nem lehet megoldani, pontosabban a 
>> fv. végrehajtásának idejéig lehet, de onnatól semmi sem garantálható :-) 
>> Hogy szokták ezt megoldani?
>>     
>
> Igen, ehhez mutex kell. Minden esetben lockolni kell egy utasítás _blockot_, 
> ha az ott használt objektumot mas szal is hasznalhatja ugyanabban az idoben.
> Az "ugyanabban az idoben"-t ugy kell erteni, hogy ha taszkvaltas van, akkor 
> kerulhet olyan helyre a vezerles a masik taszkban, ami hasznalja.
>
> Akkor is kell, ha pl. az iras/olvasas nem egy lepes, hanem tobb, mert a 
> syscall-ok kozott mar lehet thread valtas.
>
>   




More information about the Elektro mailing list