linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [OT] madvise.2
@ 2001-06-11  8:40 Andries.Brouwer
  0 siblings, 0 replies; only message in thread
From: Andries.Brouwer @ 2001-06-11  8:40 UTC (permalink / raw)
  To: linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3856 bytes --]

Now that I asked in public for manpages for the not-yet-documented
system calls, I suppose I should report on received pages in order
to avoid duplication. Yesterday or so I got an madvise.2 page
and polished it a bit. Current version below. Comments are welcome.
Note that comments in mm/filemap.c and what this code does in reality
differ quite a lot.

Andries

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


NAME
       madvise - give advice about use of memory

SYNOPSIS
       #include <sys/mman.h>

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

DESCRIPTION
       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
       application 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 applica­
       tion, but may influence its  performance.  The  kernel  is
       free to ignore the advice.

       For  Linux,  the  address start must be page-aligned.  For
       Linux, if there are some parts of  the  specified  address
       range  that  are  not  mapped,  madvise  ignores  them and
       applies the call to the rest, but returns ENOMEM from  the
       system call.  For Linux, zero length is permitted.

       The  advice is indicated in the advice parameter which can
       be

       MADV_NORMAL
              No special treatment. This is the default.

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

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

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

       MADV_DONTNEED
              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 asso­
              ciated with it.)

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

ERRORS
       EINVAL the  value  len  is  negative,  start  is not page-
              aligned, advice is not a valid value, or the appli­
              cation  is  attempting  to release locked or shared
              pages (with MADV_DONTNEED).

       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.


HISTORY
       The madvise function first appeared in 4.4BSD.

CONFORMING TO
       POSIX.1b (POSIX.4).  The Austin draft describes posix_mad­
       vise with  constants  POSIX_MADV_NORMAL,  etc.,  with  the
       behaviour described here. There is a similar posix_fadvise
       for file access.

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

Linux 2.4.5                 2001-06-10                          1

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-06-11  8:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-11  8:40 [OT] madvise.2 Andries.Brouwer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).