source: trunk/src/libctests/glibc/nptl/pthread_attr_setstack.c@ 2196

Last change on this file since 2196 was 2036, checked in by bird, 21 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Ulrich Drepper <[email protected]>, 2002.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18 02111-1307 USA. */
19
20#include <assert.h>
21#include <errno.h>
22#include <limits.h>
23#include "pthreadP.h"
24
25
26int
27__pthread_attr_setstack (attr, stackaddr, stacksize)
28 pthread_attr_t *attr;
29 void *stackaddr;
30 size_t stacksize;
31{
32 struct pthread_attr *iattr;
33
34 assert (sizeof (*attr) >= sizeof (struct pthread_attr));
35 iattr = (struct pthread_attr *) attr;
36
37 /* Catch invalid sizes. */
38 if (stacksize < PTHREAD_STACK_MIN)
39 return EINVAL;
40
41#ifdef EXTRA_PARAM_CHECKS
42 EXTRA_PARAM_CHECKS;
43#endif
44
45 iattr->stacksize = stacksize;
46 iattr->stackaddr = (char *) stackaddr + stacksize;
47 iattr->flags |= ATTR_FLAG_STACKADDR;
48
49 return 0;
50}
51
52#if PTHREAD_STACK_MIN == 16384
53strong_alias (__pthread_attr_setstack, pthread_attr_setstack)
54#else
55# include <shlib-compat.h>
56versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack,
57 GLIBC_2_3_3);
58
59# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3)
60
61int
62__old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
63 size_t stacksize)
64{
65 struct pthread_attr *iattr;
66
67 assert (sizeof (*attr) >= sizeof (struct pthread_attr));
68 iattr = (struct pthread_attr *) attr;
69
70 /* Catch invalid sizes. */
71 if (stacksize < 16384)
72 return EINVAL;
73
74# ifdef EXTRA_PARAM_CHECKS
75 EXTRA_PARAM_CHECKS;
76# endif
77
78 iattr->stacksize = stacksize;
79 iattr->stackaddr = (char *) stackaddr + stacksize;
80 iattr->flags |= ATTR_FLAG_STACKADDR;
81
82 return 0;
83}
84
85compat_symbol (libpthread, __old_pthread_attr_setstack, pthread_attr_setstack,
86 GLIBC_2_2);
87# endif
88
89#endif
Note: See TracBrowser for help on using the repository browser.