Ciao, il
I ha uno pseudo driver semplice praticamente copiato fuori “dalla lezione privata dei driver di dispositivo di scrittura„. Che cosa stavo provando a realizzare era assegnante ed esportante la memoria del nocciolo da questo driver allo spazio app dell'utente. Non sono interessato nell'esportazione della memoria del dispositivo quindi che ho utilizzato soltanto il devmap_umem_setup nel punto di ingresso del devmap (). Ho uno spazio app dell'utente che denomina il mmap per invocare la procedura del devmap. Sulla base dei valori di ritorno di tutte le procedure ha coinvolto entrambi nel driver quale ddi_umem_alloc, il devmap_setup, devmap_umem_setup e la chiamata del mmap nell'utente app sembra che il tracciato riesca. Tuttavia quando fisso qualcosa nell'utente app a quell'indirizzo di memoria restituito da mmap, non posso leggerlo indietro dal driver che usando il ddi_umem_cookie_t. Il valore ha letto indietro nel driver indicato dal biscotto è differente che l'un insieme dallo spazio app dell'utente. Non sto utilizzando alcuni contrappesi sia nel mmap che il devmap_umem_setup (che passano 0) e la lunghezza che è passata è 4096. La mia domanda è fa il ddi_umem_cookie_t regolato dal punto del ddi_umem_alloc alla stessa posizione di memoria (dopo che cosa traduzioni di indirizzo che devono accadere) che la chiamata del mmap rinvii poichè i contrappesi sono 0 e la lunghezza è 1 formato di pagina (4096) ed il addr nel mmap è 0.
user app:
fd=open („ /devices/pseudo/dummy@0: 0 ", O_RDWR);
mapadd = mmap64 (0, len, (PROT_READ|PROT_WRITE), MAP_SHARED, fd, 0);
driver:
xsp->umem = ddi_umem_alloc (8192, DDI_UMEM_SLEEP | DDI_UMEM_PAGEABLE, & (xsp->ucookie));
error = devmap_setup (sviluppatore, 0, asp, addrp, 4096, prot, maxprot, bandierine, credp);
error = devmap_umem_setup (maniglia, xsp->dip, POSIZIONE DI SEGNALE MINIMO, xsp->ucookie, 0, 4096, PROT_ALL, DEVMAP_DEFAULTS, POSIZIONE DI SEGNALE MINIMO); la comprensione del
My era che io avrebbe potuta accedere alla memoria indicato xsp->ucookie (spazio del nocciolo) così come dal mapadd (spazio dell'utente) ma quello non sembra essere l'aiuto del case
Any sarebbe molto appreciated.
Thanks
class= del
|