Главная » (2) Системные вызовы ядра (функции языка Си)





ИМЯ


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 Память можно изменять.
... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 457 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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) ил ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 430 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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"). Дополнительные типы становятся доступными
после з ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 440 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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.
Количество читаемых байт — меньше ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 427 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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 отображ ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 498 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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() возвращает указатель на область отображения. В
случае о ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 414 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)





ИМЯ


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() выполняют обратную операцию, разблокируя часть или
всё виртуальное адресное пространство процесса, после чего страницы в этом
диапазоне виртуальных адресов могут вытесняться в пространство подкачки, если того
потребуется менеджеру памяти ядра.

Размер блокировки и разблокир ... Читать дальше »

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 443 | Добавил: Администратор | Дата: 21.11.2017 | Комментарии (0)

« 1 2 ... 27 28 29 30 31 ... 59 60 »