Posted By: Quasimodo (Quasimodo) on 'CZprogram' Title: spinlock Date: Mon Sep 6 17:33:29 2004 Zdar, napsal jsem driver a nechce se mu fungovat. Takze hned jako prvni pokus jsem si dal preklad s prepinacem -pedantic. Kompilator mi hned vzapeti nasel jednu "zajimavost": #define DEBUG_SPINLOCKS 0 /* 0 == no debugging, 1 == maintain lock state, 2 == full debug */ #if (DEBUG_SPINLOCKS < 1) #define atomic_dec_and_lock(atomic,lock) atomic_dec_and_test(atomic) #define ATOMIC_DEC_AND_LOCK /* * Your basic spinlocks, allowing only a single CPU anywhere */ typedef struct { } spinlock_t; #define SPIN_LOCK_UNLOCKED (spinlock_t) { } #define spin_lock_init(lock) do { } while(0) #define spin_lock(lock) (void)(lock) /* Not "unused variable". */ #define spin_is_locked(lock) (0) #define spin_trylock(lock) ({1; }) #define spin_unlock_wait(lock) do { } while(0) #define spin_unlock(lock) do { } while(0) #elif (DEBUG_SPINLOCKS < 2) atd. To jako ze kdyz nedebuguju, tak nepotrebuju zamykat? Chape tu nekdo a mohl by mi vysvetlit, jak tohle muze neco delat? Zda se mi, ze to je vsechno naprosto prazdnej kod... Nalezeno v hlavickah kernelu linuxu 2.4.19 v distribuci SuSE 8.1 Drze je to jeste pomenovan 2.4.19-64GB-SMP a opravdu to bezi na dual pentaku. Nechapu, jaktoze ostatni moduly funguji. Nebo ten kod fakt neco dela a ja jsem tak tupej, ze to nechapu? - Clovek je nejpomalejsi zname zarizeni typu I/O. Quasimodo