Lines Matching +full:memory +full:- +full:to +full:- +full:memory
16 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
38 .Bd -ragged -offset indent
42 Alternatively, to load the driver as a
45 .Bd -literal -offset indent
49 To have the driver attach to a device instead of its regular driver,
50 mention it in the list of devices assigned to the following loader variable:
51 .Bd -ragged -offset indent
58 device driver attaches to PCI or ISA devices when no other device drivers
61 The driver itself has no knowledge of the device it attaches to.
62 Programs can open these device special files and perform register-level
70 In both these use cases, it is far more convenient to develop and run the
72 Especially hardware diagnostics requires a somewhat user-friendly interface
82 operations to be performed on them.
87 system calls are used to perform input and output (resp.) on the port.
97 system call is used to select the port number, relative to the I/O port
99 If, for example, the device special file corresponds to an I/O port region
100 from 0x3f8 to 0x3ff inclusive, then an offset of 4 given to lseek with a
111 .Bd -literal
117 .Ss Memory mapped I/O resources
118 The device special files created for memory mapped I/O resources behave
120 Additionally, device special files for memory mapped I/O resources allow
121 the memory to be mapped into the process' address space using
123 Reads and writes to the memory address returned by
125 go directly to the hardware.
133 Also, make sure the compiler does not optimize memory accesses away or has
152 .Bd -literal
188 field is used to specify which DMA operation is to be performed.
191 field is used to specify which object the operation applies to.
192 An object is either a tag or a memory descriptor (md).
194 .Bl -tag -width XXXX
202 sub-structure.
203 These constraints correspond roughly to those that can be given to the
210 field is used to identify the parent tag from which to derive the new tag.
217 sub-structure.
218 The combined constraints are written back to the
220 sub-structure on return.
225 field specifies the tag to destroy.
227 This means that derived tags that have this tag as a parent and memory
230 Allocate memory that satisfies the constraints put forth by the tag
235 sub-structure.
236 The key of the memory descriptor for this memory is returned in the
241 sub-structure is filled on return with details of the allocation.
242 The kernel virtual address and the size of the allocated memory are returned
248 The number of contiguous physical memory segments and the address of the first
254 Allocated memory is automatically loaded and thus mapped into bus space.
263 is implemented, which means that memory is currently always allocated as a
264 single contiguous region of physical memory.
265 In practice this also tends to give a single contiguous region in bus space.
268 Free previously allocated memory and destroy the memory descriptor.
271 driver is not in a position to track whether the memory has been mapped in
273 the memory before it is freed.
276 driver also cannot protect against the hardware writing to or reading from
277 the memory, even after it has been freed.
278 When the memory is reused for other purposes it can be corrupted or cause
279 the hardware to behave in unpredictable ways when DMA has not stopped
282 Create an empty memory descriptor with the tag specified in the
286 sub-structure.
287 The key of the memory descriptor is returned in the
291 Destroy the previously created memory descriptor specified by the
294 When the memory descriptor is still loaded, it is unloaded first.
296 Load a contiguous region of memory in the memory descriptor specified by the
307 sub-structure contains the result of the operation.
321 Unload the memory descriptor specified by the
325 Guarantee that all hardware components have a coherent view of the memory
326 tracked by the memory descriptor, specified by the
329 A sub-section of the memory can be targeted by specifying the relative
330 offset and size of the memory to make coherent.
337 sub-structure.
340 field holds the sync operation to be performed.
341 This is similar to the
346 Access to PCI configuration space is possible through the
356 All device special files corresponding to a PCI device are located under
363 .Bl -tag -width XXXXXX -compact -offset indent
376 This device special file gives access to the PCI configuration space.
387 representing I/O port or memory mapped I/O space (resp.)
391 first I/O port address or first memory mapped I/O address.
392 Consequently, all device special files corresponding to an ISA device are
398 For each I/O port or memory mapped I/O address, a device special file is
405 representing I/O port or memory mapped I/O space (resp.)
406 When the device has a DMA channel assigned to it, a device special file
412 If the ISA device is not a Plug-and-Play device nor present in the ACPI
418 single memory mapped I/O region will have the following device special files:
420 .Bl -tag -width XXXXXX -compact -offset indent
427 .Bl -tag -width XXXXXX -compact -offset indent
449 Because programs have direct access to the hardware, the
452 It is not advisable to use this driver on a production machine.
457 driver does not fully support memory descriptors that need multiple
458 physical memory segments or multiple bus space segments.
460 for the application to obtain all segments.
466 converted into signals and delivered to the program that has registered
472 The details of how a program is to interact with the DMA controller still
473 need to be fleshed out.