tutti sanno che il gestore di interrupt dovrebbe essere il più corto possibile. e l'aggiunta di funzioni come printk
per il debug all'interno di un gestore di interruzioni è qualcosa che non dovrebbe essere fatto. In realtà, l'ho provato prima, quando stavo eseguendo il debug del kernel linux per un dispositivo di char char di interrupt che ho scritto, e distruggeva i tempi del driver.printk all'interno di un gestore di interrupt, è davvero così male?
La domanda che ho, è perché questo sta accadendo? printk
la funzione è memorizzata nel buffer! significa, per quanto comprendo, che i dati siano inseriti in una coda e che vengano gestiti in seguito, molto probabilmente dopo che il gestore di interruzioni è finito.
Quindi perché non funziona?
Considerate la possibilità che la vostra chiamata di stampa riempia semplicemente il buffer, forzandolo a svuotare. Cosa succederà quando faccio I/O nel tuo gestore di interrupt? –
Sì, è davvero così male. Grazie e buona notte. –
Questo * funziona *. 'printk' è progettato per essere chiamato dal contesto di interrupt o processo. Se non lo fosse, non sarebbe molto utile per il debug. Ovviamente non lo si chiama in contesto di interruzione in un driver di produzione, comunque. – EML