[osy] Prenos hodnoty makra do jinych zdrojaku

  • From: Lukas Jezek <lukas.jezek@xxxxxxxxx>
  • To: osy@xxxxxxxxxxxxx
  • Date: Mon, 03 Nov 2008 12:11:55 +0100

Zdarec,

narazil jsem na problem: kdyz mam v zavislosti na hodnote makra DEBUG_MUTEX umirat na odblokovani mutexu cizim vlaknem nebo si toho nevsimat, tak potrebuju dostat tento symbol do prekladu meho souboru mutex.c

Coz ale nejde, pokud je tento debuzici symbol definovan napriklad v testu (mutex5/test.c)...

Zatim jsem to ve spolupraci s Jarou vyresili tak, ze je misto funkce definovano makro mutex_unlock, ktere se rozexpanduje na volani funkci v zavislosti na hodnote toho symbolu... Mozna to je takle lepsi a jedine spravne a mozne, nevim...

Vypada to nejak takhle:

// mutex.h

extern void mutex_unlock_check(struct mutex * mtx);
extern void mutex_unlock_do(struct mutex * mtx);

#if DEBUG_MUTEX >= 1
#define mutex_unlock(mtx) {\
        ipl_t state = query_and_disable_interrupts();\
        mutex_unlock_check(mtx);\
        mutex_unlock_do(mtx);\
        conditionally_enable_interrupts(state);\
}
#else
#define mutex_unlock(mtx) { mutex_unlock_do(mtx); }
#endif


P.S. Testy na mutexy uz skoro vsechny fungujou, ale u 1 (cislo 3) asi dochazi k deadlocku :-(

L.

Other related posts: