summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include/rtems/posix/config.h
blob: 11c73c2b2f23bbf6232a597266fa1adb0e72d678 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/**
 * @file
 *
 * @brief User Defined Configuration Parameters Specific For The POSIX API
 * 
 * This include file contains the table of user defined configuration
 * parameters specific for the POSIX API.
 */

/*
 *  COPYRIGHT (c) 1989-2014.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.rtems.org/license/LICENSE.
 */

#ifndef _RTEMS_POSIX_CONFIG_H
#define _RTEMS_POSIX_CONFIG_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 *  @defgroup ClassicConfig Configuration
 *
 *  @ingroup ClassicRTEMS
 *
 *  This encapsulates functionality related to the application's configuration
 *  of the Classic API including the maximum number of each class of objects.
 */
/**@{*/

/**
 *  For now, we are only allowing the user to specify the entry point
 *  and stack size for POSIX initialization threads.
 */
typedef struct {
  /** This is the entry point for a POSIX initialization thread. */
  void       *(*thread_entry)(void *);
  /** This is the stack size for a POSIX initialization thread. */
  int       stack_size;
} posix_initialization_threads_table;

/**
 *  The following records define the POSIX Configuration Table.
 *  The information contained in this table is required in all
 *  RTEMS systems which include POSIX threads support, whether
 *  single or multiprocessor.  This table primarily defines the
 *  following:
 *
 *     + required number of each object type
 */
typedef struct {
  /**
   * This field contains the maximum number of POSIX API
   * threads which are configured for this application.
   */
  uint32_t                            maximum_threads;

  /**
   * This field contains the maximum number of POSIX API
   * mutexes which are configured for this application.
   */
  uint32_t                            maximum_mutexes;

  /**
   * This field contains the maximum number of POSIX API
   * condition variables which are configured for this application.
   */
  uint32_t                            maximum_condition_variables;

  /**
   * This field contains the maximum number of POSIX API
   * timers which are configured for this application.
   */
  uint32_t                            maximum_timers;

  /**
   * This field contains the maximum number of POSIX API
   * queued signals which are configured for this application.
   */
  uint32_t                            maximum_queued_signals;

  /**
   * This field contains the maximum number of POSIX API
   * message queues which are configured for this application.
   */
  uint32_t                            maximum_message_queues;

  /**
   * This field contains the maximum number of POSIX API
   * semaphores which are configured for this application.
   */
  uint32_t                            maximum_semaphores;

  /**
   * This field contains the maximum number of POSIX API
   * barriers which are configured for this application.
   */
  uint32_t                            maximum_barriers;

  /**
   * This field contains the maximum number of POSIX API
   * read/write locks which are configured for this application.
   */
  uint32_t                            maximum_rwlocks;

  /**
   * This field contains the number of POSIX API Initialization
   * threads listed in @a User_initialization_thread_table.
   */
  uint32_t                            number_of_initialization_threads;

  /**
   * This field contains the list of POSIX API Initialization threads.
   */
  posix_initialization_threads_table *User_initialization_threads_table;
} posix_api_configuration_table;

/**
 * @brief POSIX API configuration table.
 *
 * This is the POSIX API Configuration Table expected to be generated
 * by confdefs.h.
 */
extern posix_api_configuration_table Configuration_POSIX_API;

/**@}*/
#ifdef __cplusplus
}
#endif

#endif
/* end of include file */