5 * This translation unit implements operations on thread attribute objects.
7 * --------------------------------------------------------------------------
9 * Pthreads-win32 - POSIX Threads Library for Win32
10 * Copyright(C) 1998 John E. Bossom
11 * Copyright(C) 1999,2005 Pthreads-win32 contributors
13 * Contact Email: rpj@callisto.canberra.edu.au
15 * The current list of contributors is contained
16 * in the file CONTRIBUTORS included with the source
17 * code distribution. The list can also be seen at the
18 * following World Wide Web location:
19 * http://sources.redhat.com/pthreads-win32/contributors.html
21 * This library is free software; you can redistribute it and/or
22 * modify it under the terms of the GNU Lesser General Public
23 * License as published by the Free Software Foundation; either
24 * version 2 of the License, or (at your option) any later version.
26 * This library is distributed in the hope that it will be useful,
27 * but WITHOUT ANY WARRANTY; without even the implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29 * Lesser General Public License for more details.
31 * You should have received a copy of the GNU Lesser General Public
32 * License along with this library in the file COPYING.LIB;
33 * if not, write to the Free Software Foundation, Inc.,
34 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
38 #include "implement.h"
42 pthread_attr_init (pthread_attr_t
* attr
)
44 * ------------------------------------------------------
46 * Initializes a thread attributes object with default
51 * pointer to an instance of pthread_attr_t
55 * Initializes a thread attributes object with default
59 * 1) Used to define thread attributes
62 * 0 successfully initialized attr,
63 * ENOMEM insufficient memory for attr.
65 * ------------------------------------------------------
68 pthread_attr_t attr_result
;
72 /* This is disallowed. */
76 attr_result
= (pthread_attr_t
) malloc (sizeof (*attr_result
));
78 if (attr_result
== NULL
)
83 #if defined(_POSIX_THREAD_ATTR_STACKSIZE)
85 * Default to zero size. Unless changed explicitly this
86 * will allow Win32 to set the size to that of the
89 attr_result
->stacksize
= 0;
92 #if defined(_POSIX_THREAD_ATTR_STACKADDR)
93 /* FIXME: Set this to something sensible when we support it. */
94 attr_result
->stackaddr
= NULL
;
97 attr_result
->detachstate
= PTHREAD_CREATE_JOINABLE
;
99 #if defined(HAVE_SIGSET_T)
100 memset (&(attr_result
->sigmask
), 0, sizeof (sigset_t
));
101 #endif /* HAVE_SIGSET_T */
104 * Win32 sets new threads to THREAD_PRIORITY_NORMAL and
105 * not to that of the parent thread. We choose to default to
108 attr_result
->param
.sched_priority
= THREAD_PRIORITY_NORMAL
;
109 attr_result
->inheritsched
= PTHREAD_EXPLICIT_SCHED
;
110 attr_result
->contentionscope
= PTHREAD_SCOPE_SYSTEM
;
112 attr_result
->valid
= PTW32_ATTR_VALID
;