madvise man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

madvise(3C)		 Standard C Library Functions		   madvise(3C)

NAME
       madvise - provide advice to VM system

SYNOPSIS
       #include <sys/types.h>
       #include <sys/mman.h>

       int madvise(caddr_t addr, size_t len, int advice);

DESCRIPTION
       The  madvise() function advises the kernel that a region of user mapped
       memory in the range [addr, addr + len) will  be	accessed  following  a
       type  of pattern. The kernel uses this information to optimize the pro‐
       cedure for manipulating and maintaining the resources  associated  with
       the specified mapping range.

       Values for advice are defined in <sys/mman.h> as:

       #define MADV_NORMAL	     0x0  /* No further special treatment */
       #define MADV_RANDOM	     0x1  /* Expect random page references */
       #define MADV_SEQUENTIAL	     0x2  /* Expect sequential page references */
       #define MADV_WILLNEED	     0x3  /* Will need these pages */
       #define MADV_DONTNEED	     0x4  /* Don't need these pages */
       #define MADV_FREE	     0x5  /* Contents can be freed */
       #define MADV_ACCESS_DEFAULT   0x6  /* default access */
       #define MADV_ACCESS_LWP	     0x7  /* next LWP to access heavily */
       #define MADV_ACCESS_MANY	     0x8  /* many processes to access heavily */

       MADV_NORMAL	       This is the default system characteristic where
			       accessing  memory  within  the  address	 range
			       causes  the system to read data from the mapped
			       file. The kernel reads all data from files into
			       pages  which  are retained for a period of time
			       as a "cache." System  pages  can	 be  a	scarce
			       resource, so the kernel steals pages from other
			       mappings when needed. This is a	likely	occur‐
			       rence, but adversely affects system performance
			       only if a large amount of memory is accessed.

       MADV_RANDOM	       Tell the kernel to read in a minimum amount  of
			       data  from a mapped file on any single particu‐
			       lar access. If  MADV_NORMAL is in  effect  when
			       an  address  of	a mapped file is accessed, the
			       system tries to read in as much data  from  the
			       file  as	 reasonable,  in anticipation of other
			       accesses within a certain locality.

       MADV_SEQUENTIAL	       Tell the system that addresses  in  this	 range
			       are  likely  to	be  accessed only once, so the
			       system will  free  the  resources  mapping  the
			       address range as quickly as possible.

       MADV_WILLNEED	       Tell the system that a certain address range is
			       definitely needed  so  the  kernel  will	 start
			       reading	the  specified range into memory. This
			       can benefit programs wanting  to	 minimize  the
			       time needed to access memory the first time, as
			       the kernel would need to read in from the file.

       MADV_DONTNEED	       Tell the	 kernel	 that  the  specified  address
			       range is no longer needed, so the system starts
			       to  free	 the  resources	 associated  with  the
			       address range.

       MADV_FREE	       Tell  the kernel that contents in the specified
			       address range are no longer important  and  the
			       range will be overwritten. When there is demand
			       for memory, the system will free pages  associ‐
			       ated  with the specified address range. In this
			       instance, the next time a page in  the  address
			       range   is  referenced,	it  will  contain  all
			       zeroes.	Otherwise, it will  contain  the  data
			       that  was  there	 prior	to the MADV_FREE call.
			       References made to the address range  will  not
			       make  the  system read from backing store (swap
			       space) until the page is modified again.

			       This value cannot be used on mappings that have
			       underlying file objects.

       MADV_ACCESS_LWP	       Tell  the kernel that the next LWP to touch the
			       specified address range	will  access  it  most
			       heavily,	 so  the kernel should try to allocate
			       the memory and other resources for  this	 range
			       and the LWP accordingly.

       MADV_ACCESS_MANY	       Tell the kernel that many processes and/or LWPs
			       will access the specified  address  range  ran‐
			       domly  across the machine, so the kernel should
			       try to allocate the memory and other  resources
			       for this range accordingly.

       MADV_ACCESS_DEFAULT     Reset  the  kernel's  expectation  for  how the
			       specified  range	 will  be  accessed   to   the
			       default.

       The  madvise()  function	 should	 be used by applications with specific
       knowledge of their access patterns over a  memory  object,  such	 as  a
       mapped file, to increase system performance.

RETURN VALUES
       Upon  successful completion, madvise() returns 0; otherwise, it returns
       −1 and sets errno to indicate the error.

ERRORS
       EAGAIN	       Some or all mappings  in	 the   address	 range	[addr,
		       addr  +	len) are locked for I/O.

       EBUSY	       Some or all of the addresses in the range [addr, addr +
		       len) are locked	and  MS_SYNC  with  the	 MS_INVALIDATE
		       option is specified.

       EFAULT	       Some  or	 all  of  the addresses in the specified range
		       could not be  read  into	 memory	 from  the  underlying
		       object  when  performing	 MADV_WILLNEED.	 The madvise()
		       function could return prior  to	this  condition	 being
		       detected,  in  which  case  errno  will	not  be set to
		       EFAULT.

       EINVAL	       The addr argument is not a multiple of the page size as
		       returned	 by  sysconf(3C),  the length of the specified
		       address range is equal to 0, or the advice argument was
		       invalid.

       EIO	       An  I/O error occurred while reading from or writing to
		       the file system.

       ENOMEM	       Addresses in the range [addr, addr + len)  are  outside
		       the  valid range for the address space of a process, or
		       specify one or more pages that are not mapped.

       ESTALE	       Stale NFS file handle.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Stable			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │MT-Safe			   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       meminfo(2), mmap(2), sysconf(3C), attributes(5)

SunOS 5.10			  23 Feb 2005			   madvise(3C)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net