remap_file_pages

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
REMAP_FILE_PAGES(2)	  Linux Programmer’s Manual	  REMAP_FILE_PAGES(2)



NAME
       remap_file_pages - create a non-linear file mapping

SYNOPSIS
       #include <sys/mman.h>

       void  *remap_file_pages(void  *start,  size_t  size, int prot, ssize_t
       pgoff, int flags);

DESCRIPTION
       The remap_file_pages() system call is used to create a non-linear map-
       ping,  that  is,	 a  mapping in which the pages of the file are mapped
       into a  non-sequential  order  in  memory.   The	 advantage  of	using
       remap_file_pages()  over	 using	repeated calls to mmap(2) is that the
       former approach does not require the kernel to create  additional  VMA
       (Virtual Memory Area) data structures.

       To create a non-linear mapping we perform the following steps:

       1.     Use  mmap()  to  create  a mapping (which is initially linear).
	      This mapping must be created with the MAP_SHARED flag.

       2.     Use one or more calls to remap_file_pages()  to  rearrange  the
	      correspondence  between  the pages of the mapping and the pages
	      of the file.  It is possible to map the same  page  of  a	 file
	      into multiple locations within the mapped region.

       The pgoff and size arguments specify the region of the file that is to
       be relocated within the mapping: pgoff is a file offset	in  units  of
       the system page size; size is the length of the region in bytes.

       The start argument serves two purposes.	First, it identifies the map-
       ping whose pages we want to rearrange.  Thus, start must be an address
       that  falls  within  a  region  previously mapped by a call to mmap().
       Second, start specifies the address at which the file pages identified
       by pgoff and size will be placed.

       The  prot  argument  is	ignored,  and must be specified as 0.  In the
       future, it may be possible to use this argument to change the  protec-
       tion  of	 the pages of the specified region without creating a new VMA
       (as is done by mprotect()).

       The flags argument has the same meaning as for mmap(), but  all	flags
       other than MAP_NONBLOCK are ignored.

RETURN VALUE
       On  success,  remap_file_pages() returns 0.  On error, -1 is returned,
       and errno is set appropriately.

NOTES
       The remap_file_pages() system call appeared in Linux 2.5.46.

ERRORS
       EINVAL start does not refer  to	a  valid  mapping  created  with  the
	      MAP_SHARED flag.

       EINVAL start, size, or pgoff is invalid.

CONFORMING TO
       The remap_file_pages() system call is Linux specific.

SEE ALSO
       getpagesize(2), mmap(2), mmap2(2), mprotect(2), mremap(2), msync(2).




Linux 2.6			  2003-12-10		  REMAP_FILE_PAGES(2)