Repository 32bit  Forum
Repository 64bit  Wiki

Spin Lock (Assembler)[RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Spin Lock (Assembler)[RISOLTO]

Messaggioda afterjames » lun mag 26, 2008 12:30

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 :(
Ultima modifica di afterjames il lun mag 26, 2008 18:54, modificato 1 volta in totale.
afterjames
Linux 1.0
Linux 1.0
 
Messaggi: 64
Iscritto il: lun gen 14, 2008 15:14

Re: Spin Lock (Assembler)[RISOLTO]

Messaggioda afterjames » lun mag 26, 2008 18:54

Ho capito..Rende atomica l'operazione successiva
afterjames
Linux 1.0
Linux 1.0
 
Messaggi: 64
Iscritto il: lun gen 14, 2008 15:14


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite