pthread_attr_setstackaddr()

Установить атрибут адреса пользовательского стека потока

Прототип:

#include <pthread.h>
int pthread_attr_setstackaddr( pthread_attr_t *attr,
void *stackaddr );

Аргументы:

attr
Указатель на структуру pthread_attr_t, определяющую атрибуты создаваемого потока. Подробнее см. pthread_attr_init().
stackaddr
Указатель на блок памяти, который предлагается использовать в качестве стека нового потока.

Библиотека:

libc

Описание:

Функция pthread_attr_setstackaddr() устанавливает адрес буфера stackaddr, используемого в качестве стека создаваемого потока, в объекте attr.

Значение по умолчанию NULL соответствует динамически создаваемогу стеку минимального размера PTHREAD_STACK_MIN. Если стек создан системой, то и освобождаться он будет ею. В противном стеке за освобождение ресурсов должен отвечать разработчик.


Note:
  • Если вы создаете стек, поле guardsize стрктуры pthread_attr_t игнорируется и защита от переполнения стека не применяется.

  • Система использует часть стека для хранения специальных объектов таких, как, например, TLS-буфер и начальный кадр стека.

Возвращаемое значение:

EOK
Успешное завершение.

Классификация:

POSIX 1003.1 Threads, Thread Stack Address Attribute

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

ЗОСРВ «Нейтрино» интерпретирует значение PTHREAD_STACK_MIN как размер памяти, достаточный для запуска ничего не делающего потока вида:

void nothingthread( void )
{
return;
}

Тематические ссылки:

pthread_attr_getstackaddr(), pthread_attr_init(), pthread_create()




Предыдущий раздел: Описание API системной библиотеки