[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