Unix/Linux Go Back    

NetBSD 6.1.5 - man page for x86_64_get_mtrr (netbsd section 2)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

X86_64_GET_MTRR(2)		  BSD/x86_64 System Calls Manual	       X86_64_GET_MTRR(2)

     x86_64_get_mtrr, x86_64_set_mtrr -- access Memory Type Range Registers

     x86_64 Architecture Library (libx86_64, -lx86_64)

     #include <sys/types.h>
     #include <machine/sysarch.h>
     #include <machine/mtrr.h>

     x86_64_get_mtrr(struct mtrr *mtrrp, int *n);

     x86_64_set_mtrr(struct mtrr *mtrrp, int *n);

     These functions provide an interface to the MTRR registers found on 686-class processors for
     controlling processor access to memory ranges.  This is most useful for accessing devices
     such as video accelerators on pci(4) and agp(4) buses.  For example, enabling write-combin-
     ing allows bus-write transfers to be combined into a larger transfer before bursting over
     the bus.  This can increase performance of write operations 2.5 times or more.

     mtrrp is a pointer to one or more mtrr structures, as described below.  The n argument is a
     pointer to an integer containing the number of structures pointed to by mtrrp.  For
     x86_64_set_mtrr() the integer pointed to by n will be updated to reflect the actual number
     of MTRRs successfully set.  For x86_64_get_mtrr() no more than n structures will be copied
     out, and the integer value pointed to by n will be updated to reflect the actual number of
     valid structures retrieved.  A NULL argument to mtrrp will result in just the number of
     MTRRs available being returned in the integer pointed to by n.

     The argument mtrrp has the following structure:

     struct mtrr {
	     uint64_t base;
	     uint64_t len;
	     uint8_t type;
	     int flags;
	     pid_t owner;

     The location of the mapping is described by its physical base address base and length len.
     Valid values for type are:

	   MTRR_TYPE_UC      uncached memory
	   MTRR_TYPE_WC      use write-combining
	   MTRR_TYPE_WT      use write-through caching
	   MTRR_TYPE_WP      write-protected memory
	   MTRR_TYPE_WB      use write-back caching

     Valid values for flags are:

	   MTRR_PRIVATE  own range, reset the MTRR when the current process exits
	   MTRR_FIXED	 use fixed range MTRR
	   MTRR_VALID	 entry is valid

     The owner member is the PID of the user process which claims the mapping.	It is only valid
     if MTRR_PRIVATE is set in flags.  To clear/reset MTRRs, use a flags field without MTRR_VALID

     Upon successful completion zero is returned, otherwise -1 is returned on failure, and the
     global variable errno is set to indicate the error.  The integer value pointed to by n will
     contain the number of successfully processed mtrr structures in both cases.

     [ENOSYS]  The currently running kernel or CPU has no MTRR support.

     [EINVAL]  The currently running kernel has no MTRR support, or one of the mtrr structures
	       pointed to by mtrrp is invalid.

     [EBUSY]   No unused MTRRs are available.

     The x86_64_get_mtrr() and x86_64_set_mtrr() were derived from their i386 counterparts, which
     appeared in NetBSD 1.6.

BSD					November 10, 2001				      BSD
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 07:42 AM.