ИМЯ mprotect, pkey_mprotect - контролирует доступ к области памяти
ОБЗОР #include <sys/mman.h>
int mprotect(void *addr, size_t len, int prot); int pkey_mprotect(void *addr, size_t len, int prot, int pkey);
ОПИСАНИЕ Вызов mprotect() изменяет параметры доступа страниц памяти вызывающего процесса, которые содержатся, даже частично, в адресном диапазоне [addr, addr+len-1]. Значение addr должно быть выровнено на границу страницы.
Если вызывающий процесс нарушает защиту доступа к памяти, то ядро посылает процессу сигнал SIGSEGV.
Значение prot представляет собой комбинацию следующих флагов доступа: PROT_NONE или побитово сложенные другие значения из следующего списка:
PROT_NONE Доступ к памяти запрещён.
PROT_READ Память можно читать.
PROT_WRITE Память можно изменять.
...
Читать дальше »
|
ИМЯ move_pages - перемещает отдельные страницы процесса на другой узел
ОБЗОР #include <numaif.h>
long move_pages(int pid, unsigned long count, void **pages, const int *nodes, int *status, int flags);
Компонуется при указании параметра -lnuma.
ОПИСАНИЕ Вызов move_pages() перемещает указанные в pages страницы процесса с pid в память узлов, заданных в nodes. Результат перемещения отражается в status. В flags задаются ограничения на перемещаемые страницы.
Значение pid представляет собой идентификатор процесса, в котором перемещаются страницы. Если pid равен 0, то move_pages() перемещается страницы вызывающего процесса.
Для перемещения страниц в другом процессе требуются следующие права:
* В ядрах до Linux 4.12 включительно: вызывающий должен иметь права (CAP_SYS_NICE) ил
...
Читать дальше »
|
ИМЯ mount - применяется для монтирования файловых систем.
ОБЗОР #include <sys/mount.h>
int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data);
ОПИСАНИЕ Вызов mount() подключает файловую систему, указанную в source (обычно здесь задаётся название устройства, но также может быть указано имя каталога, или файла, или фиктивное устройство), к пути заданному в target(каталогу или файлу).
Для монтирования файловых систем требуются специальные права (Linux: мандат CAP_SYS_ADMIN).
Вариант filesystemtype доступные ядру перечислены в /proc/filesystems (например: "btrfs", "ext4", "jfs", "xfs", "vfat", "fuse", "tmpfs", "cgroup", "proc", "mqueue", "nfs", "cifs", "iso9660"). Дополнительные типы становятся доступными после з
...
Читать дальше »
|
ИМЯ modify_ldt - возвращает или изменяет запись LDT у процесса
ОБЗОР #include <sys/types.h>
int modify_ldt(int func, void *ptr, unsigned long bytecount);
Замечание: В glibc нет обёрточной функции для данного системного вызова; смотрите ЗАМЕЧАНИЯ.
ОПИСАНИЕ Вызов modify_ldt() считывает или записывает таблицу локальных дескрипторов (LDT) процесса. LDT представляет собой массив дескрипторов сегментов, которые могут использоваться в пользовательском коде. В Linux процессам разрешено настраивать попроцессные (в действительности, пространство памяти) LDT. Дополнительную информацию о LDT, смотрите в Intel Software Developer's Manual или AMD Architecture Programming Manual.
Если func равно 0, то modify_ldt() читает LDT в память, на которую указывает ptr. Количество читаемых байт — меньше
...
Читать дальше »
|
ИМЯ mmap, munmap - отображает файлы или устройства в памяти, или удаляет их отображение
ОБЗОР #include <sys/mman.h>
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *addr, size_t length);
Информацию по требованиям макроса тестирования свойств смотрите в разделе ЗАМЕЧАНИЯ.
ОПИСАНИЕ Вызов mmap() создаёт новое отображение в виртуальном адресном пространстве вызывающего процесса. Адрес начала нового отображения указывается в addr. В аргументе length задаётся длина отображения.
Если значение addr равно NULL, то ядро само выбирает адрес, по которому создаётся отображение; это наиболее переносимый метод создания нового отображения. Если значение addr не равно NULL, то ядро учитывает это при размещении отображения; в Linux отображ
...
Читать дальше »
|
ИМЯ mmap2 - отображает файлы или устройства в память
ОБЗОР #include <sys/mman.h>
void *mmap2(void *addr, size_t length, int prot, int flags, int fd, off_t pgoffset);
ОПИСАНИЕ Вероятно, вам нужен не сам системный вызов; смотрите mmap(2), описывающую обёрточную функцию glibc, которая вызывает данный системный вызов.
Системный вызов mmap2() предоставляет тот же интерфейс что и mmap(2), за исключением того, что последний аргумент задаёт смещение в файле в 4096-байтовых единицах (вместо байт, как это делается в mmap(2)). Это позволяет приложениям использовать 32-битное значение off_t для отображения больших файлов (до 2^44 байт).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ При удачном завершении mmap2() возвращает указатель на область отображения. В случае о
...
Читать дальше »
|
ИМЯ mlock, mlock2, munlock, mlockall, munlockall - блокируют и разблокируют память
ОБЗОР #include <sys/mman.h>
int mlock(const void *addr, size_t len); int mlock2(const void *addr, size_t len, int flags); int munlock(const void *addr, size_t len);
int mlockall(int flags); int munlockall(void);
ОПИСАНИЕ Вызовы mlock(), mlock2() и mlockall() блокируют часть или всё виртуальное адресное пространство процесса в ОЗУ, запрещая эту память перемещать в пространство подкачки.
Вызовы munlock() и munlockall() выполняют обратную операцию, разблокируя часть или всё виртуальное адресное пространство процесса, после чего страницы в этом диапазоне виртуальных адресов могут вытесняться в пространство подкачки, если того потребуется менеджеру памяти ядра.
Размер блокировки и разблокир
...
Читать дальше »
| « 1 2 ... 27 28 29 30 31 ... 59 60 » |