mmap()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Nick, all,

With mmap() VM operations, with a page fault would it be possible to
allocate/map more than one page ?

I will try to explain a bit more in detail, what I would like to do.

I have a PCIe bridge which can capture frames at very high resolutions
at a very fast rate. Based on the requirements, these chipsets handle
memory in a way slightly different to other frame grabber chipsets.
They have an onchip MMU with a DMA Multiplexer, where the chipset has
to be allocated with all the relevant memory needed for operation at
chip initialization time. The allocated memory is 2MB (512 pages long,
can be contiguous or non-contiguous). There needs to be a minimal of 8
such buffers. ie, total 16MB each.

The user application can read each 2MB buffer (Scatter Gather list) on
an IRQ/MSI event. The buffer to be read from (of the 8 buffers) go
around on a round-robin fashion. I would like to avoid a memcpy of the
buffers in this application, basically due to the bandwidth in use.
Initially, I thought about mmap(), where  2 such buffers (where the
total visible virtual region appears as 4MB long):


1.  Init-> Buffer1 mapped into the first half
2.  Page fault -> Buffer2 mapped into the second half
3.  Page fault-> Buffer1 unmapped; Buffer3 mapped into first half
4.  Page fault-> Buffer2 unmapped; Buffer4 mapped into second half
5.  Page fault-> Buffer3 unmapped; Buffer5 mapped into first half
6.  Page fault-> Buffer4 unmapped; Buffer6 mapped into second half
7.  Page fault-> Buffer5 unmapped; Buffer7 mapped into first half
8.  Page fault-> Buffer6 unmapped; Buffer8 mapped into second half
9.  Page fault-> Buffer7 unmapped; Buffer1 mapped into first half
10. Page fault-> Buffer8 unmapped; Buffer2 mapped into second half


and the cycle goes on. I was wondering whether there's any option to
map the buffers in such a way, rather than to do map/allocate a page
on each page fault ? I really looked many places, but couldn't really
make out something similar and hence my query.

Ideas and thoughts would be much appreciated.

Thanks,
Manu

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]