[OSy] Test as1/mutex5 a free(const void *)

Michal Demin michal.demin at gmail.com
Mon Oct 26 17:01:25 CET 2009


Ahoj

2009/10/26 Radim Vansa <radim.vansa at matfyz.cz>:
> 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

"man gcc" ti napovie, ze Definovat makro moze znamenat taktiez parameter -D
takze do CFLAGS pripises nieco ako -DDEBUG_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
> *)

S pametou kam ukazujes si mozes robit cokolvek, ale ten pointer by si
menit nemal, aspon tak to chapem ja
const sa vztahuje na premennu, a nie na pamat kam premenna ukazuje.

>
> Předem díky za odpověď
>
> Radim Vansa @ bovaza
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>

md aka Michal Demin




More information about the NSWI004 mailing list