if (error) return ERR_PTR(error); return cpu_addr;
}
void arch_dma_clear_uncached(void *cpu_addr, size_t size)
{ unsignedlong va = (unsignedlong)cpu_addr;
mmap_write_lock(&init_mm); /* walk_page_range shouldn't be able to fail here */
WARN_ON(walk_kernel_page_table_range(va, va + size,
&clear_nocache_walk_ops, NULL, NULL));
mmap_write_unlock(&init_mm);
}
void arch_sync_dma_for_device(phys_addr_t addr, size_t size, enum dma_data_direction dir)
{ switch (dir) { case DMA_TO_DEVICE: /* Flush the dcache for the requested range */
local_dcache_range_flush(addr, addr + size); break; case DMA_FROM_DEVICE: /* Invalidate the dcache for the requested range */
local_dcache_range_inv(addr, addr + size); break; default: /* *NOTE:Ifdir==DMA_BIDIRECTIONALthenthere'snoneedto *flushnorinvalidatethecachehereastheareawillneed *tobemanuallysyncedanyway.
*/ break;
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.