Pagina 1 di 1

Spin Lock (Assembler)[RISOLTO]

Inviato: lun 26 mag 2008, 12:30
da afterjames
Salve a tutti.Sto guardando il codice di un semplice spin-lock e ci sono delle cose che non riesco a capire:

Codice: Seleziona tutto

typedef struct {
	unsigned int slock;
} raw_spinlock_t;


static inline void __raw_spin_lock(raw_spinlock_t *lock)
{
	asm volatile(
		"1:\n\t"
		"lock;decl %0\n\t"         //???????????
		"jns 2f\n\t"
		"3:\n\t"
		"rep;nop\n\t"
		"cmpl $0,%0\n\t"
		"jle 3b\n\t"
		"jmp 1b\n\t"
		"2:\t" : "=m" (lock->slock) : : "memory");
}
Vorrei sapere cosa significa in assembler mettere una cosa del tipo "puntatore;".Ho capito che provo a decrementare il contenuto di un registro e se lo trovo minore o uguale a zero mi fermo, come con un semaforo, ma non capisco la sintassi :(

Re: Spin Lock (Assembler)[RISOLTO]

Inviato: lun 26 mag 2008, 18:54
da afterjames
Ho capito..Rende atomica l'operazione successiva