[OSy] Test as1/mutex5 a free(const void *)
Radim Vansa
radim.vansa at matfyz.cz
Mon Oct 26 16:56:20 CET 2009
Zdravím,
měli bychom dva dotazy:
Testy mutex4 a mutex5 testují, jestli mutex_unlock volá stejné vlákno,
jako zavolalo mutex_lock. Respektive toto chování se zapíná makrem
DEBUG_MUTEX.
Není nám úplně jasné, jak má při kompilaci těchto testů, kde v
mutex5/test.c je
#define DEBUG_MUTEX 1
, být s tímto makrem zkompilován i soubor mutex.c, kde je implementace
mutexů. To by vyžadovalo, aby makro bylo definováno v nějakém
hlavičkovém souboru, který mutex.c inkluduje.
Je tu samozřejmě možnost umístit celou implementaci mutexů přímo do
hlavičkového souboru, ale to nám nepřipadá nejvhodnější (je to více
kódu, kdyby to bylo kompilováno dvakrát, záviselo by to na místě použití
apod.) - je k tomu nějaký důvod?
Druhý dotaz je na hlavičku funkce free(const void *) a potažmo i další
funkce ze druhého zadání, které vracejí nějaký kus paměti systému. Proč
je tam to const? Systém přece může po uvolnění páchat cokoliv na daném
kusu paměti, volající kód nemůže spoléhat, že se uvolněná paměť nebude
měnit.
Ano, toto se dá v C prostě natvrdo přetypovat, ale to přece není dobrá
praktika. Myslíme si, že interface by měl obsahovat pouze funkci
free(void *)
Předem díky za odpověď
Radim Vansa @ bovaza
More information about the NSWI004
mailing list