xref: /openbsd-src/lib/libpthread/man/pthread_attr_setstackaddr.3 (revision 97d58a65bd54bd9676cb97860d747bbb8545ec7b)
1*97d58a65Sjsg.\" $OpenBSD: pthread_attr_setstackaddr.3,v 1.13 2022/07/17 09:53:40 jsg Exp $
27682efa6Sd.\" Manual page derived from TOG's UNIX98 documentation.
3084a1742Sjmc.\"
4084a1742Sjmc.\"  David Leonard, 2000. Public Domain.
5084a1742Sjmc.\"
6*97d58a65Sjsg.Dd $Mdocdate: July 17 2022 $
77682efa6Sd.Dt PTHREAD_ATTR_SETSTACKADDR 3
87682efa6Sd.Os
97682efa6Sd.Sh NAME
107682efa6Sd.Nm pthread_attr_setstackaddr ,
117682efa6Sd.Nm pthread_attr_getstackaddr
127682efa6Sd.Nd set and get stackaddr attribute
137682efa6Sd.Sh SYNOPSIS
1486f9d4cdStedu.In pthread.h
157682efa6Sd.Ft int
167682efa6Sd.Fn pthread_attr_setstackaddr "pthread_attr_t *attr" "void *stackaddr"
177682efa6Sd.Ft int
186ae9c702Sbrad.Fn pthread_attr_getstackaddr "const pthread_attr_t *attr" "void **stackaddr"
197682efa6Sd.Sh DESCRIPTION
207682efa6SdThe functions
217682efa6Sd.Fn pthread_attr_setstackaddr
227682efa6Sdand
237682efa6Sd.Fn pthread_attr_getstackaddr ,
247682efa6Sdrespectively, set and get the thread
257682efa6Sdcreation
267682efa6Sd.Va stackaddr
277682efa6Sdattribute in the
287682efa6Sd.Fa attr
297682efa6Sdobject.
307682efa6Sd.Pp
317682efa6SdThe
327682efa6Sd.Va stackaddr
337682efa6Sdattribute specifies the location of storage to be
34ee997aeaSmpechused for the created thread's stack.
35ee997aeaSmpechThe size of the storage is at least
367682efa6Sd.Dv PTHREAD_STACK_MIN .
37003f5e42Sderaadt.Pp
38003f5e42SderaadtOn
39003f5e42Sderaadt.Ox
40003f5e42Sderaadtthe stack must have been allocated using
41*97d58a65Sjsg.Xr mmap 2
42003f5e42Sderaadtwith the
43003f5e42Sderaadt.Va MAP_STACK
44003f5e42Sderaadtattribute.
45003f5e42SderaadtOtherwise, use of the stack will cause SIGABRT faults.
46003f5e42Sderaadt.Xr pthread_attr_setstack 3
47003f5e42Sderaadtcan avoid this problem because it knows the size of the stack to remap.
48ba0a4b2fSjmc.Sh RETURN VALUES
497682efa6SdUpon successful completion,
507682efa6Sd.Fn pthread_attr_setstackaddr
517682efa6Sdand
527682efa6Sd.Fn pthread_attr_getstackaddr
53ba0a4b2fSjmcreturn a value of 0.
54ba0a4b2fSjmcOtherwise, an error number is returned to indicate the error.
557682efa6Sd.Pp
567682efa6SdThe
577682efa6Sd.Fn pthread_attr_getstackaddr
587682efa6Sdfunction stores the
597682efa6Sd.Va stackaddr
607682efa6Sdattribute value in
617682efa6Sd.Fa stackaddr
627682efa6Sdif successful.
637682efa6Sd.Sh ERRORS
647682efa6SdNo errors are defined.
657682efa6Sd.Pp
667682efa6SdThese functions will not return an error code of
677682efa6Sd.Bq Er EINTR .
687682efa6Sd.Sh SEE ALSO
697682efa6Sd.Xr pthread_attr_init 3 ,
707682efa6Sd.Xr pthread_attr_setdetachstate 3 ,
7191063d07Sguenther.Xr pthread_attr_setguardsize 3 ,
7211ddadc0Sguenther.Xr pthread_attr_setstack 3 ,
737682efa6Sd.Xr pthread_attr_setstacksize 3 ,
747682efa6Sd.Xr pthread_create 3 ,
757682efa6Sd.Xr pthreads 3
767682efa6Sd.Sh STANDARDS
7711ddadc0Sguenther.Fn pthread_attr_setstackaddr
7811ddadc0Sguentherand
7911ddadc0Sguenther.Fn pthread_attr_getstackaddr
8011ddadc0Sguentherconform to ISO/IEC 9945-1 ANSI/IEEE
817682efa6Sd.Pq Dq Tn POSIX
827682efa6SdStd 1003.1 Second Edition 1996-07-12.
83