Accesso alla memoria del modulo del kernel

9

Possono due diversi moduli del kernel accedere alla stessa area di memoria da una chiamata a ioremap_nocache ()?

Ho un driver wireless e un modulo separato, vorrei che il modulo separato profili i valori di rumore sulla scheda, mentre il driver è ancora in funzione. Quindi la mia domanda sopra.

Una delle strade che ho esplorato era quella di avviare un thread del kernel dal driver, quindi ho implementato un semaforo per prevenire eventuali condizioni di competizione derivanti da lettura / scrittura simultanee nello stesso spazio di indirizzamento. Speravo che un thread figlio potesse accedere alla stessa area di memoria.

Purtroppo non ha funzionato come mi aspettavo. Gradirei qualche suggerimento.

    
posta Radagasp 28.01.2013 - 17:06

1 risposta

7

Suppongo che intendi implementare un altro modulo del kernel poiché ritieni che sia più semplice condividere i dati tra i moduli del kernel. Ma forse non è una buona scelta. Se è possibile "profilare il rumore" nello spazio utente, penso che una soluzione migliore sia implementare il "profiler" nello spazio utente.

In questa soluzione, lo user space profiler legge i dati, esegue alcuni calcoli e invia il risultato.

Se questa soluzione è ok, l'implementazione è la seguente.

Nel modulo del kernel, è sufficiente registrare un dispositivo char in "/ proc" e implementare le primitive "read" e "write". Nello spazio utente, è solo per implementare il profiler, leggere e scrivere sul dispositivo char. Dettagli e informazioni per questa implementazione sono tutti qui .

    
risposta data vitorafsr 02.12.2013 - 23:18

Leggi altre domande sui tag