mmap2 -
отображает
файлы или
устройства
в память
Standard C library (
libc,
-lc)
#include <sys/mman.h> /* Definition of MAP_* and PROT_* constants */
#include <sys/syscall.h> /* Definition of SYS_* constants */
#include <unistd.h>
void *syscall(SYS_mmap2, unsigned long addr, unsigned long length,
unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long pgoffset);
Вероятно,
вам нужен
не сам
системный
вызов;
смотрите
mmap(2),
описывающую
обёрточную
функцию glibc,
которая
вызывает
данный
системный
вызов.
The
mmap2() system call provides the same interface as
mmap(2),
except that the final argument specifies the offset into the file in 4096-byte
units (instead of bytes, as is done by
mmap(2)). This enables
applications that use a 32-bit
off_t to map large files (up to 2^44
bytes).
On success,
mmap2() returns a pointer to the mapped area. On error, -1 is
returned and
errno is set to indicate the error.
- EFAULT
- Проблема
получения
данных из
пользовательского
пространства.
- EINVAL
- (Различные
платформы,
где размер
страницы
не равен 4096
байтам.)
Значение
offset * 4096 не
кратно
размеру
страницы
системы.
Вызов
mmap2()
также
может
вернуть
любую
ошибку из
описанных
в
mmap(2).
Вызов
mmap2()
доступен
начиная с Linux
2.3.31.
Данный
вызов есть
только в Linux.
На
архитектурах,
имеющих
данный
системный
вызов,
обёрточная
функция glibc
mmap()
вызывает
данный
системный
вызов
вместо
системного
вызова
mmap(2).
Этот
системный
вызов
отсутствует
на x86-64.
На ia64 единица
offset на самом
деле имеет
размер
страницы
системы, а
не равна 4096
байтам.
getpagesize(2),
mmap(2),
mremap(2),
msync(2),
shm_open(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Alexey <
[email protected]>, Azamat
Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]>, Иван
Павлов <
[email protected]>
и Малянов
Евгений
Викторович
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]