Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Diff of /pthread_attr_setstackaddr.c [2795df] .. [117017] Maximize Restore

  Switch to unified view

a/pthread_attr_setstackaddr.c b/pthread_attr_setstackaddr.c
1
/*

1
/*
2
 * pthread_attr_setstackaddr.c

2
 * pthread_attr_setstackaddr.c
3
 *

3
 *
4
 * Description:

4
 * Description:
5
 * This translation unit implements operations on thread attribute objects.

5
 * This translation unit implements operations on thread attribute objects.
6
 *

6
 *
7
 * --------------------------------------------------------------------------

7
 * --------------------------------------------------------------------------
8
 *

8
 *
9
 *      Pthreads-win32 - POSIX Threads Library for Win32

9
 *      Pthreads-win32 - POSIX Threads Library for Win32
10
 *      Copyright(C) 1998 John E. Bossom

10
 *      Copyright(C) 1998 John E. Bossom
11
 *      Copyright(C) 1999,2005 Pthreads-win32 contributors

11
 *      Copyright(C) 1999,2005 Pthreads-win32 contributors
12
 * 

12
 * 
13
 *      Contact Email: rpj@callisto.canberra.edu.au

13
 *      Contact Email: rpj@callisto.canberra.edu.au
14
 * 

14
 * 
15
 *      The current list of contributors is contained

15
 *      The current list of contributors is contained
16
 *      in the file CONTRIBUTORS included with the source

16
 *      in the file CONTRIBUTORS included with the source
17
 *      code distribution. The list can also be seen at the

17
 *      code distribution. The list can also be seen at the
18
 *      following World Wide Web location:

18
 *      following World Wide Web location:
19
 *      http://sources.redhat.com/pthreads-win32/contributors.html

19
 *      http://sources.redhat.com/pthreads-win32/contributors.html
20
 * 

20
 * 
21
 *      This library is free software; you can redistribute it and/or

21
 *      This library is free software; you can redistribute it and/or
22
 *      modify it under the terms of the GNU Lesser General Public

22
 *      modify it under the terms of the GNU Lesser General Public
23
 *      License as published by the Free Software Foundation; either

23
 *      License as published by the Free Software Foundation; either
24
 *      version 2 of the License, or (at your option) any later version.

24
 *      version 2 of the License, or (at your option) any later version.
25
 * 

25
 * 
26
 *      This library is distributed in the hope that it will be useful,

26
 *      This library is distributed in the hope that it will be useful,
27
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of

27
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
28
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

28
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29
 *      Lesser General Public License for more details.

29
 *      Lesser General Public License for more details.
30
 * 

30
 * 
31
 *      You should have received a copy of the GNU Lesser General Public

31
 *      You should have received a copy of the GNU Lesser General Public
32
 *      License along with this library in the file COPYING.LIB;

32
 *      License along with this library in the file COPYING.LIB;
33
 *      if not, write to the Free Software Foundation, Inc.,

33
 *      if not, write to the Free Software Foundation, Inc.,
34
 *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

34
 *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
35
 */

35
 */
36
36
37
#include "pthread.h"

37
#include "pthread.h"
38
#include "implement.h"

38
#include "implement.h"
39
39
40
40
41
int

41
int
42
pthread_attr_setstackaddr (pthread_attr_t * attr, void *stackaddr)

42
pthread_attr_setstackaddr (pthread_attr_t * attr, void *stackaddr)
43
     /*

43
     /*
44
      * ------------------------------------------------------

44
      * ------------------------------------------------------
45
      * DOCPUBLIC

45
      * DOCPUBLIC
46
      *      Threads created with 'attr' will run on the stack

46
      *      Threads created with 'attr' will run on the stack
47
      *      starting at 'stackaddr'.

47
      *      starting at 'stackaddr'.
48
      *      Stack must be at least PTHREAD_STACK_MIN bytes.

48
      *      Stack must be at least PTHREAD_STACK_MIN bytes.
49
      *

49
      *
50
      * PARAMETERS

50
      * PARAMETERS
51
      *      attr

51
      *      attr
52
      *              pointer to an instance of pthread_attr_t

52
      *              pointer to an instance of pthread_attr_t
53
      *

53
      *
54
      *      stackaddr

54
      *      stackaddr
55
      *              the address of the stack to use

55
      *              the address of the stack to use
56
      *

56
      *
57
      *

57
      *
58
      * DESCRIPTION

58
      * DESCRIPTION
59
      *      Threads created with 'attr' will run on the stack

59
      *      Threads created with 'attr' will run on the stack
60
      *      starting at 'stackaddr'.

60
      *      starting at 'stackaddr'.
61
      *      Stack must be at least PTHREAD_STACK_MIN bytes.

61
      *      Stack must be at least PTHREAD_STACK_MIN bytes.
62
      *

62
      *
63
      *      NOTES:

63
      *      NOTES:
64
      *              1)      Function supported only if this macro is

64
      *              1)      Function supported only if this macro is
65
      *                      defined:

65
      *                      defined:
66
      *

66
      *
67
      *                              _POSIX_THREAD_ATTR_STACKADDR

67
      *                              _POSIX_THREAD_ATTR_STACKADDR
68
      *

68
      *
69
      *              2)      Create only one thread for each stack

69
      *              2)      Create only one thread for each stack
70
      *                      address..

70
      *                      address..
71
      *

71
      *
72
      *              3)      Ensure that stackaddr is aligned.

72
      *              3)      Ensure that stackaddr is aligned.
73
      *

73
      *
74
      * RESULTS

74
      * RESULTS
75
      *              0               successfully set stack address,

75
      *              0               successfully set stack address,
76
      *              EINVAL          'attr' is invalid

76
      *              EINVAL          'attr' is invalid
77
      *              ENOSYS          function not supported

77
      *              ENOSYS          function not supported
78
      *

78
      *
79
      * ------------------------------------------------------

79
      * ------------------------------------------------------
80
      */

80
      */
81
{

81
{
82
#if defined( _POSIX_THREAD_ATTR_STACKADDR )

82
#if defined( _POSIX_THREAD_ATTR_STACKADDR )
83
83
84
  if (ptw32_is_attr (attr) != 0)

84
  if (ptw32_is_attr (attr) != 0)
85
    {

85
    {
86
      return EINVAL;

86
      return EINVAL;
87
    }

87
    }
88
88
89
  (*attr)->stackaddr = stackaddr;

89
  (*attr)->stackaddr = stackaddr;
90
  return 0;

90
  return 0;
91
91
92
#else

92
#else
93
93
94
  return ENOSYS;

94
  return ENOSYS;
95
95
96
#endif /* _POSIX_THREAD_ATTR_STACKADDR */

96
#endif /* _POSIX_THREAD_ATTR_STACKADDR */
97
}

97
}