File: mremap.2

package info (click to toggle)
manpages-es 1.24a-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,256 kB
  • ctags: 7
  • sloc: makefile: 66; sh: 62
file content (125 lines) | stat: -rw-r--r-- 4,851 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1996 Tom Bjorkholm <tomb@mydata.se>
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" 1996-04-11 Tom Bjorkholm <tomb@mydata.se>
.\"            First version written (1.3.86)
.\" 1996-04-12 Tom Bjorkholm <tomb@mydata.se>
.\"            Update for Linux 1.3.87 and later
.\"
.\" Translated into Spanish on Thu Aug 20 1998 by Gerardo Aburruzaga
.\" Garca <gerardo@cica.es>
.\"
.TH MREMAP 2 "12 Abril 1996" "Linux 1.3.87" "Manual del Programador de Linux"
.SH NOMBRE
mremap \- re-asocia una direccin de memoria virtual
.SH SINOPSIS
.B #include <unistd.h>
.br
.B #include <sys/mman.h>
.sp
.BI "void *mremap(void *" vieja_dir ", size_t " viejo_tam
.BI ", size_t " nuevo_tam ", unsigned long " flags );
.fi
.SH DESCRIPCIN
\fBmremap\fR expande (o encoge) una asociacin existente de memoria,
movindola potencialmente a la vez (segn se controle por el argumento
\fIflags\fR y segn el espacio de direcciones virtuales disponible).

\fIvieja_dir\fR es la direccin antigua del bloque de memoria
virtual que Ud. quiere expandir (o encoger). Observe que
\fIvieja_dir\fR tiene que tener alineamiento de
pgina. \fIviejo_tam\fR es el antiguo tamao del bloque de memoria
virtual. \fInuevo_tam\fR es el tamao pedido del bloque de memoria
virtual tras el cambio de tamao.

El argumento \fIflags\fR es un mapa de bits de opciones.

En Linux la memoria se divide en pginas. Un proceso de usuario tiene
(uno o) varios segmentos de memoria virtual lineales. Cada segmento de
memoria virtual tiene una o ms asociaciones a pginas de memoria real
(en la tabla de pginas). Cada segmento de memoria virtual tiene su
propia proteccin (derechos de acceso), que pueden producir una
violacin de segmento si a la memoria se accede incorrectamente
(p.ej., por escribir en un segmento de lectura exclusiva). Acceder a
memoria virtual fuera de los segmentos tambin producir una violacin
de segmento.

\fBmremap\fR emplea el esquema de tabla de pginas de Linux.
\fBmremap\fR cambia la asociacin entre direcciones virtuales y
pginas de memoria. Esto puede emplearse para implementar un
\fBrealloc\fR muy eficiente.

.SH FLAGS
.TP
.B MREMAP_MAYMOVE
indica si la operacin, en vez de fallar, debera cambiar la direccin virtual
si el cambio de tamao no puede hacerse en el espacio virtual actual.

.SH VALOR DEVUELTO
En caso de xito, \fBmremap\fR devuelve un puntero a la nueva rea de
memoria virtual.
En caso de error, se devuelve \-1 y se pone un valor apropiado en \fIerrno\fR.

.SH ERRORES
.TP
.B EINVAL
Se ha dado un argumento invlido. Lo ms probable es que
\fIvieja_dir\fR no tenga alineamiento de pgina.
.TP
.B EFAULT
"Segmentation fault", o sea, "fallo de segmento". Alguna direccin del
rango \fIvieja_dir\fR a
\fIvieja_dir\fR+\fIviejo_tam\fR es una direccin de memoria
virtual invlida para este proceso.
Tambin uno puede obtener EFAULT incluso si existen asociaciones que
cubren el espacio entero pedido, pero esas asociaciones son de tipos
diferentes. 
.TP
.B EAGAIN
El segmento de memoria est bloqueado y no puede re-asociarse.
.TP
.B ENOMEM
El rea de memoria no puede expandirse en la direccin virtual en
curso, y la opcin \fIMREMAP_MAYMOVE\fR no est puesta en \fIflags\fR.
O bien, no hay bastante memoria (virtual) disponible. 
.SH "CONFORME A"
Esta llamada es especfica de Linux, y no debera emplearse en
programas que se pretendan transportables. 4.2BSD tena una llamada igual
(nunca implementada realmente)
.BR mremap (2)
con una semntica completamente diferente.
.SH VASE TAMBIN
.BR getpagesize (2),
.BR realloc (3),
.BR malloc (3),
.BR brk (2),
.BR sbrk (2),
.BR mmap (2)
.P
Su libro de texto favorito de Sistemas Operativos para ms informacin
sobre la memoria paginada. Por ejemplo:
\fISistemas Operativos Modernos\fR por Andrew S. Tannenbaum, 
\fIInside Linux\fR por Randolf Bentson, o
\fIThe Design of the UNIX Operating System\fR por Maurice J. Bach.