On Sat, Jun 17, 2006 at 10:36:58AM +0000, gosha wrote: > Проблема с kernel 2.6.16.18/20.- Пробовал пересобрать (портировать) kernel 2.6.16.18: > static spinlock_t lock; > spin_lock_init(&lock); > for(ir=0;ir<128;ir++) > {spin_lock(&lock); > printk("%s %s %d spinlock=%ld,%p\r\n", __FILE__, __FUNCTION__, __LINE__, ir, lock.raw_lock); > } > так она ни на одном мутексе не останавливается... Значит, этот тест был выполнен на ядре *-up, где spin_lock() действительно ничего не делает. Spinlock используются только на SMP для синхронизации между несколькими процессорами. Код, пытающийся рекурсивно захватить один и тот же spinlock на одном процессоре, недопустим - это гарантированный deadlock. > И в include/linux/spinlock*.h ничего похожего на разблокировку/ блокировку .... Все реализации spinlock архитектурно-зависимые, и поэтому лежат в include/asm-*.