2013-10-19 11 views
6

Nel dispositivo Linux sviluppo di driver, la struttura file_operations usa "modulo struct * proprietario".significato di THIS_MODULE nel driver per Linux

[1] Qual è l'uso di tale struttura, quando abbiamo sempre inizializzarla con THIS_MODULE? [2] Quando questo campo può essere impostato su NULL?

risposta

7

questo campo dice chi è proprietario di file_operations struct. Ciò impedisce al modulo di scaricarsi quando è in funzione. Quando inizializzato con THIS_MODULE modulo corrente ne detiene la proprietà

1

[1] struct module * il proprietario è comunemente utilizzato in alcune strutture e non è affatto un'operazione; è un puntatore al modulo che "possiede" la struttura. Questo campo viene utilizzato per impedire che il modulo venga scaricato mentre le sue operazioni sono in uso. Quasi sempre, è semplicemente inizializzato su THIS_MODULE, una macro definita in < linux/module.h>.

.

[2] non mi consiglia di impostare a NULL, perché può portare a un malfunzionamento del driver e altri problemi. Invece, usa le buone pratiche dello sviluppo del kernel linux.

In alcune architetture del ".owner" è stato rimosso, quindi, assicurarsi che la distribuzione e l'architettura ancora utilizzarlo.

spero che aiuta la vostra comprensione.

Riferimenti: LDD3, neofiti del kernel.

Problemi correlati