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