.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk .\" .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH pthread_attr_setstack 3 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ pthread_attr_setstack, pthread_attr_getstack \- изменяет/возвращает атрибуты стека из объекта атрибутов нити .SH LIBRARY POSIX threads library (\fIlibpthread\fP, \fI\-lpthread\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint pthread_attr_setstack(pthread_attr_t *\fP\fIattr\fP\fB,\fP \fB void \fP\fIstackaddr\fP\fB[.\fP\fIstacksize\fP\fB],\fP \fB size_t \fP\fIstacksize\fP\fB);\fP \fBint pthread_attr_getstack(const pthread_attr_t *restrict \fP\fIattr\fP\fB,\fP \fB void **restrict \fP\fIstackaddr\fP\fB,\fP \fB size_t *restrict \fP\fIstacksize\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBpthread_attr_getstack\fP(), \fBpthread_attr_setstack\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH ОПИСАНИЕ Функция \fBpthread_attr_setstack\fP() изменяет атрибуты адреса и размера стека в объекте атрибутов нити, на который указывает \fIattr\fP, на значения, задаваемые в \fIstackaddr\fP и \fIstacksize\fP, соответственно. Данными атрибутами задаёт расположение и размер стека, который будет использоваться нитью, создаваемой с использованием объекта атрибутов нити \fIattr\fP. .P Значение \fIstackaddr\fP должно указывать на самый младший адресуемый байт буфера из \fIstacksize\fP байт, выделенного вызывающим. Страницы выделенного буфера должны быть доступны на чтение и запись. .P Функция \fBpthread_attr_getstack\fP() возвращает атрибуты адреса и размера стека из объекта атрибутов нити, на который указывает \fIattr\fP, в буфер, на который указывает \fIstackaddr\fP и \fIstacksize\fP, соответственно. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении эти функции возвращают 0; при ошибке возвращается ненулевой номер ошибки. .SH ОШИБКИ Функция \fBpthread_attr_setstack\fP() может завершиться со следующей ошибкой: .TP \fBEINVAL\fP \fIstacksize\fP is less than \fBPTHREAD_STACK_MIN\fP (16384) bytes. On some systems, this error may also occur if \fIstackaddr\fP or \fIstackaddr\~+\~stacksize\fP is not suitably aligned. .P В POSIX.1 также описана ошибка \fBEACCES\fP, которая возникает, если область стека, определённая \fIstackaddr\fP и \fIstacksize\fP, недоступна вызывающему на чтение и запись. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBpthread_attr_setstack\fP(), \fBpthread_attr_getstack\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ glibc 2.2. POSIX.1\-2001. .SH ЗАМЕЧАНИЯ Эти функции нужны приложениям, в которых нужно размещать стек в определённом месте. В большинстве приложений это не нужно и эти функции использовать не стоит (используйте \fBpthread_attr_setstacksize\fP(3), если приложению нужно задать только размер стека, отличный от умолчательного). .P Когда приложение использует \fBpthread_attr_setstack\fP(), оно самостоятельно выделяет место под стек. Защитный размер, задаваемый \fBpthread_attr_setguardsize\fP(3), игнорируется. Если его учитывать необходимо, то приложение должно самостоятельно выделять защитную область (одну или несколько страниц, защищённых от чтения и записи) для обработки возможного переполнения стека. .P Адрес, указанный в \fIstackaddr\fP, должен быть выровнен соответствующим образом: для полной переносимости выравнивайте его по границе страницы (\fIsysconf(_SC_PAGESIZE)\fP). Для выделения полезно использовать функцию \fBposix_memalign\fP(3). Вероятно, значение \fIstacksize\fP также должно быть кратно размеру системной страницы. .P Если \fIattr\fP используется при создании нескольких нитей, то вызывающий должен изменять атрибут адреса стека между вызовами \fBpthread_create\fP(3); в противном случае нити будут пытаться использовать одну и ту же область памяти для стека и возникнет хаос. .SH ПРИМЕРЫ Смотрите \fBpthread_attr_init\fP(3). .SH "СМ. ТАКЖЕ" .ad l .nh \fBmmap\fP(2), \fBmprotect\fP(2), \fBposix_memalign\fP(3), \fBpthread_attr_init\fP(3), \fBpthread_attr_setguardsize\fP(3), \fBpthread_attr_setstackaddr\fP(3), \fBpthread_attr_setstacksize\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov , kogamatranslator49 , Kogan, Max Is , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .