Unix/Linux Go Back    

RedHat 9 (Linux i386) - man page for madvise (redhat section 2)

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

MADVISE(2)			    Linux Programmer's Manual			       MADVISE(2)

       madvise - give advice about use of memory

       #include <sys/mman.h>

       int madvise(void *start, size_t length, int advice);

       The  madvise system call advises the kernel about how to handle paging input/output in the
       address range beginning at address start and with size length bytes. It allows an applica-
       tion  to tell the kernel how it expects to use some mapped or shared memory areas, so that
       the kernel can choose appropriate read-ahead and caching techniques.  This call	does  not
       influence  the semantics of the application (except in the case of MADV_DONTNEED), but may
       influence its performance. The kernel is free to ignore the advice.

       The advice is indicated in the advice parameter which can be

	      No special treatment. This is the default.

	      Expect page references in random order.  (Hence, read ahead may be less useful than

	      Expect  page  references in sequential order.  (Hence, pages in the given range can
	      be aggressively read ahead, and may be freed soon after they are accessed.)

	      Expect access in the near future.  (Hence, it might be a good  idea  to  read  some
	      pages ahead.)

	      Do  not  expect access in the near future.  (For the time being, the application is
	      finished with the given range, so the kernel can	free  resources  associated  with
	      it.)   Subsequent  accesses  of  pages  in this range will succeed, but will result
	      either in re-loading of the memory contents from the underlying  mapped  file  (see
	      mmap) or zero-fill-on-demand pages for mappings without an underlying file.

       On success madvise returns zero. On error, it returns -1 and errno is set appropiately.

       EINVAL the  value len is negative, start is not page-aligned, advice is not a valid value,
	      or the application is attempting to release locked or shared pages (with MADV_DONT-

       ENOMEM addresses  in  the  specified  range  are  not currently mapped, or are outside the
	      address space of the process.

       ENOMEM (for MADV_WILLNEED) Not enough memory - paging in failed.

       EIO    (for MADV_WILLNEED) Paging in this area would exceed the process's maximum resident
	      set size.

       EBADF  the map exists, but the area maps something that isn't a file.

       EAGAIN a kernel resource was temporarily unavailable.

       The  current Linux implementation (2.4.0) views this system call more as a command than as
       advice and hence may return an error when it  cannot  do  what  it  usually  would  do  in
       response  to  this advice. (See the ERRORS description above.)  This is nonstandard behav-

       The Linux implementation requires that the  address  start  be  page-aligned,  and  allows
       length  to  be  zero.  If there are some parts of the specified address range that are not
       mapped, the Linux version of madvise ignores them and applies the call to  the  rest  (but
       returns ENOMEM from the system call, as it should).

       The madvise function first appeared in 4.4BSD.

       POSIX.1b   (POSIX.4).	POSIX	1003.1-2001   describes   posix_madvise   with	constants
       POSIX_MADV_NORMAL, etc., with a behaviour close to that described here. There is a similar
       posix_fadvise for file access.

       getrlimit(2), mmap(2), mincore(2), mprotect(2), msync(2), munmap(2)

Linux 2.4.5				    2001-06-10				       MADVISE(2)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 08:24 AM.