map(D2X)

map - support virtual mapping for memory-mapped device

Showing IRIX 6.5.30 (default release). Unchanged since IRIX 6.5.

NAME
     map - support virtual mapping for memory-mapped device

SYNOPSIS
     #include <sys/types.h>
     #include <sys/mman.h>
     #include <sys/ddi.h>
     #include <ksys/ddmap.h>

     int prefixmap(dev_t dev, vhandl_t *vt, off_t off, size_t len, uint prot);

   Arguments
     dev  Device whose memory is to be mapped.

     vt   A pointer to the kernel-resident data structure that describes the
          virtual space to which the device memory will be mapped.  The driver
          needs this pointer when calling kernel service routines (i.e.,
          v_mapphys(D3X)).

     off  Offset within device memory at which mapping begins.

     len  The length (in bytes) of the device memory to be mapped into the
          user's address space.

     prot Protection flags from mman.h.

DESCRIPTION
     The map entry point provides a way to support drivers for memory-mapped
     devices. A memory-mapped device has memory that can be mapped into a
     process's address space. The mmap(2) system call allows this device
     memory to be mapped into user space for direct access by the user
     application (this way no kernel buffering or system call overhead is
     incurred).

   Return Values
     If the protection and offset are valid for the device, the driver should
     return 0. Otherwise, the appropriate error number should be returned.

USAGE
     This entry point is optional, and valid for memory-mapped device drivers
     only.

     Valid values for prot are:

     PROT_READ
          Page can be read.

     PROT_WRITE
          Page can be written.
     PROT_EXEC
          Page can be executed.

     PROT_ALL
          All of the above.

     The driver should treat vt as opaque and should not try to directly set
     any of the member values.  To map physical addresses into user address
     space, drivers should use the v_mapphys(D3X) function. Use
     v_gethandle(D3X) if the driver must remember several virtual handles.

   Synchronization Constraints
     The map routine has user context and can sleep.

REFERENCES
     unmap(D2X), v_getaddr(D3X), v_getlen(D3X), v_gethandle(D3X),
     v_mapphys(D3X)