.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft-var .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH get_mempolicy 2 "28 июня 2025 г." "Справочные страницы Linux 6.15" .SH НАИМЕНОВАНИЕ get_mempolicy \- возвращает политику работы с памятью NUMA для нити .SH БИБЛИОТЕКА NUMA (Non\-Uniform Memory Access) policy library (\fIlibnuma\fP,\ \fI\-lnuma\fP) .SH ОБЗОР \fB#include \fP .nf .P \fBlong get_mempolicy(\fPunsigned long maxnode; \fB int *\fP\fImode\fP\fB,\fP \fB unsigned long \fP\fInodemask\fP\fB[(\fP\fImaxnode\fP\fB + ULONG_WIDTH \- 1)\fP \fB/ ULONG_WIDTH],\fP \fB unsigned long \fP\fImaxnode\fP\fB, void *\fP\fIaddr\fP\fB,\fP \fB unsigned long \fP\fIflags\fP\fB);\fP .fi .SH ОПИСАНИЕ Вызов \fBget_mempolicy\fP() возвращает политику NUMA вызывающей нити или адреса памяти (в зависимости от значения \fIflags\fP). .P Машина с NUMA имеет различные контроллеры памяти с различными расстояниями до определённых ЦП. Политикой памяти задаётся узел, на котором выделяется память для нити. .P Если значение \fIflags\fP равно 0, то в буферы, указанные в \fImode\fP и \fInodemask\fP, возвращается информация о политике по умолчанию для вызывающей нити (которая была задана с помощью \fBset_mempolicy\fP(2)). Полученное значение может использоваться для восстановления политики нити в её состояние на время вызова \fBget_mempolicy\fP() с помощью \fBset_mempolicy\fP(2). Если значение \fIflags\fP равно 0, то значение \fIaddr\fP должно быть равно NULL. .P Если \fIflags\fP равно \fBMPOL_F_MEMS_ALLOWED\fP (доступно, начиная с Linux 2.6.24), то аргумент \fImode\fP игнорируется и набор узлов (их памяти), которые разрешено указывать нити в последующих вызовах \fBmbind\fP(2) или \fBset_mempolicy\fP(2) (в отсутствии любых значений \fIфлагов режима\fP), возвращается в \fInodemask\fP. Не разрешено объединять \fBMPOL_F_MEMS_ALLOWED\fP с \fBMPOL_F_ADDR\fP или \fBMPOL_F_NODE\fP. .P Если \fIflags\fP равно \fBMPOL_F_ADDR\fP, то возвращается информация об управляющей политике адреса памяти, указанного в \fIaddr\fP. Эта политика может отличаться от политики нити по умолчанию, если \fBmbind\fP(2) или одна из вспомогательных функций, описанных в \fBnuma\fP(3), были использованы при установлении политики для диапазона памяти, содержащего \fIaddr\fP. .P If the \fImode\fP argument is not NULL, then \fBget_mempolicy\fP() will store the policy mode and any optional \fImode flags\fP of the requested NUMA policy in the location pointed to by this argument. If \fInodemask\fP is not NULL, then the nodemask associated with the policy will be stored in the location pointed to by this argument. \fImaxnode\fP specifies the number of node IDs that can be stored into \fInodemask\fP\[em]that is, the maximum node ID plus one. The value specified by \fImaxnode\fP is always rounded to a multiple of \fIsizeof(unsigned\ long)*8\fP. .P Если в \fIflags\fP указано \fBMPOL_F_NODE\fP и \fBMPOL_F_ADDR\fP, то \fBget_mempolicy\fP() вернёт идентификатор узла, на котором расположен адрес \fIaddr\fP в расположение, заданное \fImode\fP. Если для указанного адреса страница ещё не выделена, то \fBget_mempolicy\fP() выделит страницу, как если бы нить выполнила чтение (загрузку) по этому адресу, и вернёт идентификатор узла, на котором была размещена страница. .P .\" Note: code returns next interleave node via 'mode' argument -Lee Schermerhorn If \fIflags\fP specifies \fBMPOL_F_NODE\fP, but not \fBMPOL_F_ADDR\fP, and the thread's current policy is \fBMPOL_INTERLEAVE\fP or \fBMPOL_WEIGHTED_INTERLEAVE\fP, then \fBget_mempolicy\fP() will return in the location pointed to by a non\-NULL \fImode\fP argument, the node ID of the next node that will be used for interleaving of internal kernel pages allocated on behalf of the thread. These allocations include pages for memory\-mapped files in process memory ranges mapped using the \fBmmap\fP(2) call with the \fBMAP_PRIVATE\fP flag for read accesses, and in memory ranges mapped with the \fBMAP_SHARED\fP flag for all accesses. .P Другие значения флагов зарезервированы. .P Обзор возможных политик смотрите в \fBset_mempolicy\fP(2). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBget_mempolicy\fP() возвращает 0; при ошибке \(em \-1, а в \fIerrno\fP задаётся причина ошибки. .SH ОШИБКИ .TP \fBEFAULT\fP Часть всего диапазона памяти, заданная в \fInodemask\fP и \fImaxnode\fP, указывает за пределы доступного адресного пространства. .TP \fBEINVAL\fP The value specified by \fImaxnode\fP is less than the number of node IDs supported by the system. Or \fIflags\fP specified values other than \fBMPOL_F_NODE\fP or \fBMPOL_F_ADDR\fP; or \fIflags\fP specified \fBMPOL_F_ADDR\fP and \fIaddr\fP is NULL, or \fIflags\fP did not specify \fBMPOL_F_ADDR\fP and \fIaddr\fP is not NULL. Or, \fIflags\fP specified \fBMPOL_F_NODE\fP but not \fBMPOL_F_ADDR\fP and the current thread policy is neither \fBMPOL_INTERLEAVE\fP nor \fBMPOL_WEIGHTED_INTERLEAVE\fP. Or, \fIflags\fP specified \fBMPOL_F_MEMS_ALLOWED\fP with either \fBMPOL_F_ADDR\fP or \fBMPOL_F_NODE\fP. (And there are other \fBEINVAL\fP cases.) .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ Linux 2.6.7. .SH ПРИМЕЧАНИЯ Информация о библиотеке доступна в \fBnuma\fP(7). .SH "СМОТРИТЕ ТАКЖЕ" \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3), \fBnuma\fP(7), \fBnumactl\fP(8) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov , Иван Павлов и Kirill Rekhov . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .