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

Search the boards