Sto lavorando su driver di rete PCIe basata. Diversi esempi utilizzano uno dei pci_alloc_consistent o dma_alloc_coherent ottenere memoria per trasmissione e ricezione descrittori. Quale è meglio se c'è e qual è la differenza tra i due?differenza tra pci_alloc_consistent e dma_alloc_coherent
risposta
La differenza è sottile, ma molto importante. pci_alloc_consistent()
è la funzione meno recente dei due e dei driver precedenti ancora utilizzata. giorno d'oggi i pci_alloc_consistent()
solo chiamate dma_alloc_coherent()
.
La differenza? Il tipo di memoria allocata.
pci_alloc_consistent()
- Alloca memoria di tipoGFP_ATOMIC
. L'allocazione non dorme, per l'uso ad es. interrompe i gestori, in basso metà.dma_alloc_coherent()
- Specificate voi quale tipo di memoria assegnare a . Non si deve usare l'alta prioritàGFP_ATOMIC
memoria a meno che non ne hai bisogno e nella maggior parte dei casi, vi troverete bene conGFP_KERNEL
allocazioni.
Kernel 3.18 definizione di pci_alloc_consistent()
è molto semplice, e cioè:
static inline void *
pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
dma_addr_t *dma_handle)
{
return dma_alloc_coherent(hwdev == NULL ? NULL : &hwdev->dev, size, dma_handle, GFP_ATOMIC);
}
In breve, utilizzare dma_alloc_coherent()
.
- 1. La differenza tra $ * e $ @
- 2. Differenza tra $ # e $ {# @}
- 3. Differenza tra. e #
- 4. MySQL: Differenza tra ",", "e"
- 5. Differenza tra "o" e "||"
- 6. Differenza tra unwrapObservable e()
- 7. Differenza tra oggetto e *?
- 8. Differenza tra "**/* /" e "** /"?
- 9. Differenza tra jquery e $
- 10. CMake: differenza tra $ {} e "$ {}"
- 11. Differenza tra ". +" E ". +?"
- 12. VBA: Differenza tra & e +
- 13. Differenza tra numpy.logical_and e &
- 14. Differenza tra | = e^= css
- 15. Differenza tra `% in%` e `` ==
- 16. Differenza tra Dizionario e Hashtable
- 17. Differenza tra SCM e SVN
- 18. differenza tra RDLC e SSRS
- 19. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 20. Differenza tra "\ n" e Environment.NewLine
- 21. Differenza tra QSharedPointer e QSharedDataPointer?
- 22. Differenza tra toFixed() e toPrecision()?
- 23. Differenza tra strncpy e memcpy?
- 24. Differenza tra crittografia e hashing
- 25. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 26. Differenza tra coredata e sqlite
- 27. Differenza tra Html.RenderAction e Html.Action
- 28. differenza tra System.out.printf e String.format
- 29. Differenza tra UIViewContentModeScaleAspectFit e UIViewContentModeScaleToFill?
- 30. Differenza tra MDB e JMS