summaryrefslogtreecommitdiff
path: root/ace/config-cray.h
blob: 9bb277fc7a377552da2dd9bdc0fc9e70697e9b17 (plain)
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
/* -*- C++ -*- */
// $Id$

#ifndef ACE_CONFIG_CRAY_H
#define ACE_CONFIG_CRAY_H

/*
    The following predefined macros are used within ACE ifdefs.
    These are defined when using the Cray compilers.  _CRAYMPP
    is defined, for example, if you are running on a Cray T3E
    massively parallel machine.  Moreover, in the case of the T3E,
    _CRAYT3E will be defined.  This is used to determine the
    ACE_SIZEOF defines for primitive types.

    _UNICOS is defined as either the major version of UNICOS being run,
    e.g. 9 or 10 on the vector machines (e.g. C90, T90, J90, YMP, ...)
    or the major+minor+level UNICOS/mk version, e.g. 2.0.3 => 203,
    being run on an MPP machine.

    Summary:

    _CRAYMPP  (defined only if running on MPP machine, e.g. T3E, UNICOS/mk)
    _CRAYT3E  (defined specifically if compiling on a Cray T3E)
    _UNICOS   (defined if running UNICOS or UNICOS/mk)

    Tested on UNICOS 10.0.0.5, UNICOS/mk 2.0.4.57
    Compiles on UNICOS 9.0.2.8, but some tests deadlock

    Contributed by Doug Anderson <dla@home.com>
*/

#if defined (_UNICOS) && !defined (MAXPATHLEN)
#define MAXPATHLEN 1023
#endif /* _UNICOS */

// Turns off the tracing feature.
#if !defined (ACE_NTRACE)
#define ACE_NTRACE 1
#endif /* ACE_NTRACE */

#define ACE_DEFAULT_CLOSE_ALL_HANDLES 0

// Defines the page size of the system.
#define ACE_PAGE_SIZE 4096

#define ACE_HAS_CPLUSPLUS_HEADERS

// using cray's autoinstantiation gives C++ prelinker: error: instantiation loop
#define ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION

#define ACE_HAS_TEMPLATE_SPECIALIZATION

#define ACE_HAS_ANSI_CASTS

#define ACE_HAS_USING_KEYWORD

#define ACE_HAS_SSIZE_T

#define ACE_HAS_SYSV_IPC

#define ACE_MT_SAFE 1

#define ACE_HAS_THREADS

#define ACE_HAS_PTHREADS

// UNICOS 10 and UNICOS/mk implement a small subset of POSIX Threads,
// but the prototypes follow the POSIX.1c-1995 definitions.  Earlier
// UNICOS versions sport Draft 7 threads.

#if _UNICOS > 9
# define ACE_HAS_PTHREADS_STD
#else
# define ACE_HAS_PTHREADS_DRAFT7
# define ACE_LACKS_THREAD_STACK_SIZE
# define ACE_LACKS_THREAD_STACK_ADDR
  // UNICOS 9 doesn't have this, nor sched.h
# define SCHED_OTHER 0
# define SCHED_FIFO 1
# define SCHED_RR 2
#endif

#define ACE_HAS_THREAD_SPECIFIC_STORAGE

#define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP

#define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R

#define ACE_HAS_POSIX_TIME

#define ACE_HAS_TIMEZONE_GETTIMEOFDAY

#define ACE_HAS_POSIX_NONBLOCK

#define ACE_HAS_TERM_IOCTLS

#define ACE_HAS_DIRENT

#define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT

#define ACE_HAS_IP_MULTICAST

#define ACE_HAS_SIN_LEN

#define ACE_HAS_NONCONST_SELECT_TIMEVAL

#define ACE_HAS_NONCONST_READLINK

#define ACE_HAS_CHARPTR_SOCKOPT

#define ACE_HAS_NONCONST_GETBY

// has man pages, but links with missing symbols and I can't find lib yet
/* #define ACE_HAS_REGEX */

#define ACE_HAS_SIG_MACROS

#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES

#if _UNICOS > 9
# define ACE_HAS_SIGWAIT
#endif

#define ACE_HAS_SIG_ATOMIC_T

#define ACE_HAS_SIGISMEMBER_BUG

#define ACE_HAS_MSG

#define ACE_HAS_STRERROR

#define ACE_HAS_GPERF

// Special modifications that apply to UNICOS/mk
#if defined(_CRAYMPP)

# define ACE_HAS_SIGINFO_T
# define ACE_HAS_UCONTEXT_T

#endif

// The Cray T90 supposedly supports SYSV SHMEM, but I was unable to get it
// working.  Of course, all other Cray PVP and MPP systems do NOT support it,
// so it's probably good to just define like this for consistency
#define ACE_LACKS_SYSV_SHMEM
#define ACE_LACKS_MMAP
#define ACE_LACKS_CONST_TIMESPEC_PTR
#define ACE_LACKS_SYSCALL
#define ACE_LACKS_STRRECVFD
#define ACE_LACKS_MADVISE
#define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS
#define ACE_LACKS_LINEBUFFERED_STREAMBUF
#define ACE_LACKS_PTHREAD_CLEANUP
#define ACE_LACKS_CONDATTR_PSHARED
#define ACE_LACKS_THREAD_PROCESS_SCOPING

#if !defined(_CRAYMPP)

#define ACE_LACKS_PTHREAD_CANCEL
#define ACE_LACKS_PTHREAD_KILL

#endif

#define ACE_LACKS_MUTEXATTR_PSHARED
#define ACE_LACKS_RWLOCK_T
#define ACE_LACKS_PRI_T
#define ACE_LACKS_GETPGID
#define ACE_LACKS_SETPGID
#define ACE_LACKS_MPROTECT
#define ACE_LACKS_MSYNC
#define ACE_LACKS_READV
#define ACE_LACKS_RLIMIT

// we probably want to fake not having this, since Cray memory mgmt is different
#define ACE_LACKS_SBRK

#define ACE_LACKS_SETSCHED

#define ACE_LACKS_SIGINFO_H

#define ACE_LACKS_TIMESPEC_T

#define ACE_LACKS_WRITEV

// Cray vector machines are "word" oriented, and modern ones are hard 64-bit.
// "char" is somewhat of a special case.  Most problems arise when code thinks
// it can address 32-bit quantities and the like.  MPP crays are typically
// byte oriented, e.g. T3E uses Alpha processors, so we don't need as much
// special treatment.

#ifndef _CRAYMPP

# define ACE_SIZEOF_CHAR        1
# define ACE_SIZEOF_SHORT       8
# define ACE_SIZEOF_INT         8
# define ACE_SIZEOF_LONG        8
# define ACE_SIZEOF_LONG_LONG   8
# define ACE_SIZEOF_FLOAT       8
# define ACE_SIZEOF_DOUBLE      8
# define ACE_SIZEOF_LONG_DOUBLE 16
# define ACE_SIZEOF_VOID_P      8

#elif defined(_CRAYT3E)

# define ACE_SIZEOF_CHAR        1
# define ACE_SIZEOF_SHORT       4
# define ACE_SIZEOF_INT         8
# define ACE_SIZEOF_LONG        8
# define ACE_SIZEOF_LONG_LONG   8
# define ACE_SIZEOF_FLOAT       4
# define ACE_SIZEOF_DOUBLE      8
# define ACE_SIZEOF_LONG_DOUBLE 8
# define ACE_SIZEOF_VOID_P      8

#endif

// Ones to check out at some point

/* #define ACE_HAS_SYS_SIGLIST */

// C++ Compiler stuff to verify
/* #define ACE_NEW_THROWS_EXCEPTIONS */
/* #define ACE_HAS_TEMPLATE_TYPEDEFS */

// thread issues to check out
/* #define ACE_LACKS_TIMEDWAIT_PROTOTYPES */

// Cray does seem to support it, in -lnsl and has tiuser.h header
/* #define ACE_HAS_TLI */
/* #define ACE_HAS_TIUSER_H */
/* #define ACE_HAS_TLI_PROTOTYPES */
/* #define ACE_LACKS_T_ERRNO */

/* #define ACE_LACKS_NAMED_POSIX_SEM */

/* #define ACE_HAS_SYS_ERRLIST */

#endif /* ACE_CONFIG_CRAY_H */