new syscalls
This commit is contained in:
parent
081527a861
commit
fc7bd30680
|
@ -0,0 +1,161 @@
|
|||
.\" Copyright (c) 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)mlock.2 8.2 (Berkeley) 12/11/93
|
||||
.\"
|
||||
.Dd June 2, 1993
|
||||
.Dt MLOCK 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm mlock ,
|
||||
.Nm munlock
|
||||
.Nd lock (unlock) physical pages in memory
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/types.h>
|
||||
.Fd #include <sys/mman.h>
|
||||
.Ft int
|
||||
.Fn mlock "caddr_t addr" "size_t len"
|
||||
.Ft int
|
||||
.Fn munlock "caddr_t addr" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm mlock
|
||||
system call
|
||||
locks into memory the physical pages associated with the virtual address
|
||||
range starting at
|
||||
.Fa addr
|
||||
for
|
||||
.Fa len
|
||||
bytes.
|
||||
The
|
||||
.Nm munlock
|
||||
call unlocks pages previously locked by one or more
|
||||
.Nm mlock
|
||||
calls.
|
||||
For both, the
|
||||
.Fa addr
|
||||
parameter should be aligned to a multiple of the page size.
|
||||
If the
|
||||
.Fa len
|
||||
parameter is not a multiple of the page size, it will be rounded up
|
||||
to be so.
|
||||
The entire range must be allocated.
|
||||
.Pp
|
||||
After an
|
||||
.Nm mlock
|
||||
call, the indicated pages will cause neither a non-resident page
|
||||
nor address-translation fault until they are unlocked.
|
||||
They may still cause protection-violation faults or TLB-miss faults on
|
||||
architectures with software-managed TLBs.
|
||||
The physical pages remain in memory until all locked mappings for the pages
|
||||
are removed.
|
||||
Multiple processes may have the same physical pages locked via their own
|
||||
virtual address mappings.
|
||||
A single process may likewise have pages multiply-locked via different virtual
|
||||
mappings of the same pages or via nested
|
||||
.Nm mlock
|
||||
calls on the same address range.
|
||||
Unlocking is performed explicitly by
|
||||
.Nm munlock
|
||||
or implicitly by a call to
|
||||
.Nm munmap
|
||||
which deallocates the unmapped address range.
|
||||
Locked mappings are not inherited by the child process after a
|
||||
.Xr fork 2 .
|
||||
.Pp
|
||||
Since physical memory is a potentially scarce resource, processes are
|
||||
limited in how much they can lock down.
|
||||
A single process can
|
||||
.Nm mlock
|
||||
the minimum of
|
||||
a system-wide ``wired pages'' limit and
|
||||
the per-process
|
||||
.Li RLIMIT_MEMLOCK
|
||||
resource limit.
|
||||
.Sh RETURN VALUES
|
||||
A return value of 0 indicates that the call
|
||||
succeeded and all pages in the range have either been locked or unlocked.
|
||||
A return value of -1 indicates an error occurred and the locked
|
||||
status of all pages in the range remains unchanged.
|
||||
In this case, the global location
|
||||
.Va errno
|
||||
is set to indicate the error.
|
||||
.Sh ERRORS
|
||||
.Fn Mlock
|
||||
will fail if:
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EINVAL
|
||||
The address given is not page aligned or the length is negative.
|
||||
.It Bq Er EAGAIN
|
||||
Locking the indicated range would exceed either the system or per-process
|
||||
limit for locked memory.
|
||||
.It Bq Er ENOMEM
|
||||
Some portion of the indicated address range is not allocated.
|
||||
There was an error faulting/mapping a page.
|
||||
.El
|
||||
.Fn Munlock
|
||||
will fail if:
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EINVAL
|
||||
The address given is not page aligned or the length is negative.
|
||||
.It Bq Er ENOMEM
|
||||
Some portion of the indicated address range is not allocated.
|
||||
Some portion of the indicated address range is not locked.
|
||||
.El
|
||||
.Sh "SEE ALSO"
|
||||
.Xr fork 2 ,
|
||||
.Xr mmap 2 ,
|
||||
.Xr munmap 2 ,
|
||||
.Xr setrlimit 2 ,
|
||||
.Xr getpagesize 3
|
||||
.Sh BUGS
|
||||
Unlike The Sun implementation, multiple
|
||||
.Nm mlock
|
||||
calls on the same address range require the corresponding number of
|
||||
.Nm munlock
|
||||
calls to actually unlock the pages, i.e.
|
||||
.Nm mlock
|
||||
nests.
|
||||
This should be considered a consequence of the implementation
|
||||
and not a feature.
|
||||
.Pp
|
||||
The per-process resource limit is a limit on the amount of virtual
|
||||
memory locked, while the system-wide limit is for the number of locked
|
||||
physical pages.
|
||||
Hence a process with two distinct locked mappings of the same physical page
|
||||
counts as 2 pages against the per-process limit and as only a single page
|
||||
in the system limit.
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Fn mlock
|
||||
and
|
||||
.Fn munlock
|
||||
functions first appeared in 4.4BSD.
|
|
@ -0,0 +1,163 @@
|
|||
.\" Copyright (c) 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)pathconf.2 8.1 (Berkeley) 6/4/93
|
||||
.\"
|
||||
.Dd June 4, 1993
|
||||
.Dt PATHCONF 2
|
||||
.Os BSD 4
|
||||
.Sh NAME
|
||||
.Nm pathconf ,
|
||||
.Nm fpathconf
|
||||
.Nd get configurable pathname variables
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <unistd.h>
|
||||
.Ft long
|
||||
.Fn pathconf "const char *path" "int name"
|
||||
.Ft long
|
||||
.Fn fpathconf "int fd" "int name"
|
||||
.Sh DESCRIPTION
|
||||
.Pp
|
||||
The
|
||||
.Fn pathconf
|
||||
and
|
||||
.Fn fpathconf
|
||||
functions provides a method for applications to determine the current
|
||||
value of a configurable system limit or option variable associated
|
||||
with a pathname or file descriptor.
|
||||
.Pp
|
||||
For
|
||||
.Nm pathconf ,
|
||||
the
|
||||
.Fa path
|
||||
argument is the name of a file or directory.
|
||||
For
|
||||
.Nm fpathconf ,
|
||||
the
|
||||
.Fa fd
|
||||
argument is an open file descriptor.
|
||||
The
|
||||
.Fa name
|
||||
argument specifies the system variable to be queried.
|
||||
Symbolic constants for each name value are found in the include file
|
||||
.Li <unistd.h> .
|
||||
.Pp
|
||||
The available values are as follows:
|
||||
.Pp
|
||||
.Bl -tag -width "123456"
|
||||
.Pp
|
||||
.It Li _PC_LINK_MAX
|
||||
The maximum file link count.
|
||||
.It Li _PC_MAX_CANON
|
||||
The maximum number of bytes in terminal canonical input line.
|
||||
.It Li _PC_MAX_INPUT
|
||||
The minimum maximum number of bytes for which space is available in
|
||||
a terminal input queue.
|
||||
.It Li _PC_NAME_MAX
|
||||
The maximum number of bytes in a file name.
|
||||
.It Li _PC_PATH_MAX
|
||||
The maximum number of bytes in a pathname.
|
||||
.It Li _PC_PIPE_BUF
|
||||
The maximum number of bytes which will be written atomically to a pipe.
|
||||
.It Li _PC_CHOWN_RESTRICTED
|
||||
Return 1 if appropriate privileges are required for the
|
||||
.Xr chown 2
|
||||
system call, otherwise 0.
|
||||
.It Li _PC_NO_TRUNC
|
||||
Return 1 if file names longer than KERN_NAME_MAX are truncated.
|
||||
.It Li _PC_VDISABLE
|
||||
Returns the terminal character disabling value.
|
||||
.El
|
||||
.Sh RETURN VALUES
|
||||
If the call to
|
||||
.Nm pathconf
|
||||
or
|
||||
.Nm fpathconf
|
||||
is not successful, \-1 is returned and
|
||||
.Va errno
|
||||
is set appropriately.
|
||||
Otherwise, if the variable is associated with functionality that does
|
||||
not have a limit in the system, \-1 is returned and
|
||||
.Va errno
|
||||
is not modified.
|
||||
Otherwise, the current variable value is returned.
|
||||
.Sh ERRORS
|
||||
If any of the following conditions occur, the
|
||||
.Nm pathconf
|
||||
and
|
||||
.Nm fpathconf
|
||||
functions shall return -1 and set
|
||||
.Va errno
|
||||
to the corresponding value.
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EINVAL
|
||||
The value of the
|
||||
.Fa name
|
||||
argument is invalid.
|
||||
.It Bq Er EINVAL
|
||||
The implementation does not support an association of the variable
|
||||
name with the associated file.
|
||||
.El
|
||||
.Fn Pathconf
|
||||
will fail if:
|
||||
.Bl -tag -width ENAMETOOLONGAA
|
||||
.It Bq Er ENOTDIR
|
||||
A component of the path prefix is not a directory.
|
||||
.It Bq Er ENAMETOOLONG
|
||||
A component of a pathname exceeded 255 characters,
|
||||
or an entire path name exceeded 1023 characters.
|
||||
.It Bq Er ENOENT
|
||||
The named file does not exist.
|
||||
.It Bq Er EACCES
|
||||
Search permission is denied for a component of the path prefix.
|
||||
.It Bq Er ELOOP
|
||||
Too many symbolic links were encountered in translating the pathname.
|
||||
.It Bq Er EIO
|
||||
An I/O error occurred while reading from or writing to the file system.
|
||||
.El
|
||||
.Pp
|
||||
.Bl -tag -width [EFAULT]
|
||||
.Fn Fpathconf
|
||||
will fail if:
|
||||
.It Bq Er EBADF
|
||||
.Fa fd
|
||||
is not a valid open file descriptor.
|
||||
.It Bq Er EIO
|
||||
An I/O error occurred while reading from or writing to the file system.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr sysctl 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm pathconf
|
||||
and
|
||||
.Nm fpathconf
|
||||
functions first appeared in 4.4BSD.
|
|
@ -0,0 +1,165 @@
|
|||
.\" Copyright (c) 1983, 1991, 1992, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)sigaltstack.2 8.1 (Berkeley) 6/4/93
|
||||
.\"
|
||||
.Dd June 4, 1993
|
||||
.Dt SIGALTSTACK 2
|
||||
.Os BSD 4.2
|
||||
.Sh NAME
|
||||
.Nm sigaltstack
|
||||
.Nd set and/or get signal stack context
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/types.h>
|
||||
.Fd #include <signal.h>
|
||||
.Bd -literal
|
||||
struct sigaltstack {
|
||||
caddr_t ss_sp;
|
||||
long ss_size;
|
||||
int ss_flags;
|
||||
};
|
||||
.Ed
|
||||
.Ft int
|
||||
.Fn sigaltstack "const struct sigaltstack *ss" "struct sigaltstack *oss"
|
||||
.Sh DESCRIPTION
|
||||
.Fn Sigaltstack
|
||||
allows users to define an alternate stack on which signals
|
||||
are to be processed.
|
||||
If
|
||||
.Fa ss
|
||||
is non-zero,
|
||||
it specifies a pointer to and the size of a
|
||||
.Em "signal stack"
|
||||
on which to deliver signals,
|
||||
and tells the system if the process is currently executing
|
||||
on that stack.
|
||||
When a signal's action indicates its handler
|
||||
should execute on the signal stack (specified with a
|
||||
.Xr sigaction 2
|
||||
call), the system checks to see
|
||||
if the process is currently executing on that stack.
|
||||
If the process is not currently executing on the signal stack,
|
||||
the system arranges a switch to the signal stack for the
|
||||
duration of the signal handler's execution.
|
||||
.Pp
|
||||
If
|
||||
.Dv SA_DISABLE
|
||||
is set in
|
||||
.Fa ss_flags ,
|
||||
.Fa ss_sp
|
||||
and
|
||||
.Fa ss_size
|
||||
are ignored and the signal stack will be disabled.
|
||||
Trying to disable an active stack will cause
|
||||
.Nm
|
||||
to return -1 with
|
||||
.Va errno
|
||||
set to
|
||||
.Dv EINVAL .
|
||||
A disabled stack will cause all signals to be
|
||||
taken on the regular user stack.
|
||||
If the stack is later re-enabled then all signals that were specified
|
||||
to be processed on an alternate stack will resume doing so.
|
||||
.Pp
|
||||
If
|
||||
.Fa oss
|
||||
is non-zero, the current signal stack state is returned.
|
||||
The
|
||||
.Fa ss_flags
|
||||
field will contain the value
|
||||
.Dv SA_ONSTACK
|
||||
if the process is currently on a signal stack and
|
||||
.Dv SA_DISABLE
|
||||
if the signal stack is currently disabled.
|
||||
.Sh NOTES
|
||||
The value
|
||||
.Dv SIGSTKSZ
|
||||
is defined to be the number of bytes/chars that would be used to cover
|
||||
the usual case when allocating an alternate stack area.
|
||||
The following code fragment is typically used to allocate an alternate stack.
|
||||
.Bd -literal -offset indent
|
||||
if ((sigstk.ss_sp = malloc(SIGSTKSZ)) == NULL)
|
||||
/* error return */
|
||||
sigstk.ss_size = SIGSTKSZ;
|
||||
sigstk.ss_flags = 0;
|
||||
if (sigaltstack(&sigstk,0) < 0)
|
||||
perror("sigaltstack");
|
||||
.Ed
|
||||
An alternative approach is provided for programs with signal handlers
|
||||
that require a specific amount of stack space other than the default size.
|
||||
The value
|
||||
.Dv MINSIGSTKSZ
|
||||
is defined to be the number of bytes/chars that is required by
|
||||
the operating system to implement the alternate stack feature.
|
||||
In computing an alternate stack size,
|
||||
programs should add
|
||||
.Dv MINSIGSTKSZ
|
||||
to their stack requirements to allow for the operating system overhead.
|
||||
.Pp
|
||||
Signal stacks are automatically adjusted for the direction of stack
|
||||
growth and alignment requirements.
|
||||
Signal stacks may or may not be protected by the hardware and
|
||||
are not ``grown'' automatically as is done for the normal stack.
|
||||
If the stack overflows and this space is not protected
|
||||
unpredictable results may occur.
|
||||
.Sh RETURN VALUES
|
||||
Upon successful completion, a value of 0 is returned.
|
||||
Otherwise, a value of -1 is returned and
|
||||
.Va errno
|
||||
is set to indicate the error.
|
||||
.Sh ERRORS
|
||||
.Fn Sigstack
|
||||
will fail and the signal stack context will remain unchanged
|
||||
if one of the following occurs.
|
||||
.Bl -tag -width [ENOMEM]
|
||||
.It Bq Er EFAULT
|
||||
Either
|
||||
.Fa ss
|
||||
or
|
||||
.Fa oss
|
||||
points to memory that is not a valid part of the process
|
||||
address space.
|
||||
.It Bq Er EINVAL
|
||||
An attempt was made to disable an active stack.
|
||||
.It Bq Er ENOMEM
|
||||
Size of alternate stack area is less than or equal to
|
||||
.Dv MINSIGSTKSZ .
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr sigaction 2 ,
|
||||
.Xr setjmp 3
|
||||
.Sh HISTORY
|
||||
The predecessor to
|
||||
.Nm sigaltstack ,
|
||||
the
|
||||
.Fn sigstack
|
||||
system call, appeared in
|
||||
.Bx 4.2 .
|
Loading…
Reference in New Issue