SunOS/BSD Compatibility Library Functions mctl(3UCB)
NAME
mctl - memory management control
SYNOPSIS
/usr/ucb/cc [ flag ... ] file ...
#include
#include
int mctl(addr, len, function, arg)
caddrt addr;
sizet len;
int function;
int arg;
DESCRIPTION
mctl() applies a variety of control functions over pages
identified by the mappings established for the address range
[addr, addr ] len). The function to be performed is identi-
fied by the argument function. Valid functions are defined
in mman.h as follows:
MCLOCK Lock the pages in the range in memory. This
function is used to support mlock(). See
mlock(3C) for semantics and usage. arg is
ignored.
MCLOCKAS Lock the pages in the address space in
memory. This function is used to support
mlockall(). See mlockall(3C) for semantics
and usage. addr and len are ignored. arg is
an integer built from the flags:
MCLCURENT Lock current mappings
MCLFUTURE Lock future mappings
MCSYNC Synchronize the pages in the range with their
backing storage. Optionally invalidate cache
copies. This function is used to support
msync(). See msync(3C) for semantics and
usage. arg is used to represent the flags
argument to msync(). It is constructed from
an OR of the following values:
MSYNC Synchronized write
SunOS 5.11 Last change: 30 Oct 2007 1
SunOS/BSD Compatibility Library Functions mctl(3UCB)
MSASYNC Return immediately
MSINVALIDATE Invalidate mappings
MSASYNC returns after all I/O operations are
scheduled. MSYNC does not return until all
I/O operations are complete. Specify exactly
one of MSASYNC or MSYNC. MSINVALIDATE
invalidates all cached copies of data from
memory, requiring them to be re-obtained from
the object's permanent storage location upon
the next reference.
MCUNLOCK Unlock the pages in the range. This function
is used to support munlock(). arg is ignored.
MCUNLOCKAS Remove address space memory lock, and locks
on all current mappings. This function is
used to support munlockall(). addr and len
must have the value 0. arg is ignored.
RETURN VALUES
mctl() returns 0 on success, -1 on failure.
ERORS
mctl() fails if:
EAGAIN Some or all of the memory identified by the opera-
tion could not be locked due to insufficient sys-
tem resources.
EBUSY MSINVALIDATE was specified and one or more of the
pages is locked in memory.
EINVAL addr is not a multiple of the page size as
returned by getpagesize().
EINVAL addr and/or len do not have the value 0 when
MCLOCKAS or MCUNLOCKAS are specified.
EINVAL arg is not valid for the function specified.
SunOS 5.11 Last change: 30 Oct 2007 2
SunOS/BSD Compatibility Library Functions mctl(3UCB)
EIO An I/O error occurred while reading from or writ-
ing to the file system.
ENOMEM Addresses in the range [addr, addr ] len) are
invalid for the address space of a process, or
specify one or more pages which are not mapped.
EPERM The process's effective user ID is not superuser
and one of MCLOCK MCLOCKAS, MCUNLOCK, or
MCUNLOCKAS was specified.
SEE ALSO
cc(1B), mmap(2), memcntl(2), getpagesize(3C), mlock(3C),
mlockall(3C), msync(3C)
NOTES
Use of these interfaces should be restricted to only appli-
cations written on BSD platforms. Use of these interfaces
with any of the system libraries or in multi-thread applica-
tions is unsupported.
SunOS 5.11 Last change: 30 Oct 2007 3
|