Ho una routine che commuta il pin GPIO alto/basso, e ha un ritardo tra gli alti e bassi (usando udelay
), e quindi campiona il GPIO stato per un certo periodo. Ho bisogno di assicurarmi che questa parte del codice sia eseguita senza essere preclusa dallo scheduler o da eventuali interruzioni. Sto eseguendo il codice su un sistema ARM dual-core quindi dovrebbe essere SMP. Spin_Lock_IrqSave()
è abbastanza sicuro per tale scopo? Ho la sensazione che il mio codice sia ancora in qualche modo interrotto occasionalmente ma nessuna prova ancora.In Linux, come assicurarsi che una sequenza di codice venga eseguita senza alcuna interruzione
Grazie mille.
Grazie mille per la risposta. Voglio disabilitare sia gli interrupt che i preemption e assicurarmi che una delle mie routine possa essere eseguita senza alcuna interruzione. La routine deve chiamare il driver GPIO (gpio_set/reset_value, gpio_direction_input/output) e anche le funzioni udelay. In questo caso, spin_lock_irqsave è abbastanza sicuro? Grazie ancora – user1697356