2 // $Id: config-cray.h 81935 2008-06-12 22:01:53Z jtc $
4 #ifndef ACE_CONFIG_CRAY_H
5 #define ACE_CONFIG_CRAY_H
6 #include /**/ "ace/pre.h"
9 The following predefined macros are used within ACE ifdefs.
10 These are defined when using the Cray compilers. _CRAYMPP
11 is defined, for example, if you are running on a Cray T3E
12 massively parallel machine. Moreover, in the case of the T3E,
13 _CRAYT3E will be defined. This is used to determine the
14 ACE_SIZEOF defines for primitive types.
16 _UNICOS is defined as either the major version of UNICOS being run,
17 e.g. 9 or 10 on the vector machines (e.g. C90, T90, J90, YMP, ...)
18 or the major+minor+level UNICOS/mk version, e.g. 2.0.3 => 203,
19 being run on an MPP machine.
23 _CRAYMPP (defined only if running on MPP machine, e.g. T3E, UNICOS/mk)
24 _CRAYT3E (defined specifically if compiling on a Cray T3E)
25 _UNICOS (defined if running UNICOS or UNICOS/mk)
27 Tested on UNICOS 10.0.0.5, UNICOS/mk 2.0.4.57
28 Compiles on UNICOS 9.0.2.8, but some tests deadlock
30 Contributed by Doug Anderson <dla@home.com>
33 #if defined (_UNICOS) && !defined (MAXPATHLEN)
34 #define MAXPATHLEN 1023
37 #define ACE_DEFAULT_CLOSE_ALL_HANDLES 0
39 // Defines the page size of the system.
40 #define ACE_PAGE_SIZE 4096
42 #define ACE_HAS_CPLUSPLUS_HEADERS
44 #define ACE_HAS_SSIZE_T
46 #define ACE_HAS_SYSV_IPC
50 #define ACE_HAS_THREADS
52 #define ACE_HAS_PTHREADS
54 #define ACE_HAS_THREAD_SPECIFIC_STORAGE
56 #define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP
58 #define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R
60 #define ACE_HAS_POSIX_TIME
62 #define ACE_HAS_TIMEZONE_GETTIMEOFDAY
64 #define ACE_HAS_POSIX_NONBLOCK
66 // Platform has POSIX terminal interface.
67 #define ACE_HAS_TERMIOS
69 #define ACE_HAS_DIRENT
71 #define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT
73 #define ACE_HAS_IP_MULTICAST
75 #define ACE_HAS_SOCKADDR_IN_SIN_LEN
77 #define ACE_HAS_NONCONST_SELECT_TIMEVAL
79 #define ACE_HAS_NONCONST_READLINK
81 #define ACE_HAS_CHARPTR_SOCKOPT
83 #define ACE_HAS_NONCONST_GETBY
85 // has man pages, but links with missing symbols and I can't find lib yet
86 /* #define ACE_HAS_REGEX */
88 #define ACE_HAS_SIG_MACROS
90 #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
93 # define ACE_HAS_SIGWAIT
96 #define ACE_HAS_SIG_ATOMIC_T
98 #define ACE_HAS_SIGISMEMBER_BUG
102 #define ACE_HAS_STRERROR
104 #define ACE_HAS_GPERF
106 // Special modifications that apply to UNICOS/mk
107 #if defined(_CRAYMPP)
109 # define ACE_HAS_SIGINFO_T
110 # define ACE_HAS_UCONTEXT_T
114 // The Cray T90 supposedly supports SYSV SHMEM, but I was unable to get it
115 // working. Of course, all other Cray PVP and MPP systems do NOT support it,
116 // so it's probably good to just define like this for consistency
117 #define ACE_LACKS_SYSV_SHMEM
118 #define ACE_LACKS_MMAP
119 #define ACE_LACKS_CONST_TIMESPEC_PTR
120 #define ACE_LACKS_SYSCALL
121 #define ACE_LACKS_STRRECVFD
122 #define ACE_LACKS_MADVISE
123 #define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS
124 #define ACE_LACKS_LINEBUFFERED_STREAMBUF
125 #define ACE_LACKS_PTHREAD_CLEANUP
126 #define ACE_LACKS_CONDATTR_PSHARED
127 #define ACE_LACKS_THREAD_PROCESS_SCOPING
129 #if !defined(_CRAYMPP)
131 #define ACE_LACKS_PTHREAD_CANCEL
132 #define ACE_LACKS_PTHREAD_KILL
136 #define ACE_LACKS_MUTEXATTR_PSHARED
137 #define ACE_LACKS_RWLOCK_T
138 #define ACE_LACKS_PRI_T
139 #define ACE_LACKS_GETPGID
140 #define ACE_LACKS_SETPGID
141 #define ACE_LACKS_SETREGID
142 #define ACE_LACKS_SETREUID
143 #define ACE_LACKS_MPROTECT
144 #define ACE_LACKS_MSYNC
145 #define ACE_LACKS_READV
146 #define ACE_LACKS_RLIMIT
148 // we probably want to fake not having this, since Cray memory mgmt is different
149 #define ACE_LACKS_SBRK
151 #define ACE_LACKS_SETSCHED
153 #define ACE_LACKS_SIGINFO_H
155 #define ACE_LACKS_TIMESPEC_T
157 #define ACE_LACKS_WRITEV
159 // Cray vector machines are "word" oriented, and modern ones are hard 64-bit.
160 // "char" is somewhat of a special case. Most problems arise when code thinks
161 // it can address 32-bit quantities and the like. MPP crays are typically
162 // byte oriented, e.g. T3E uses Alpha processors, so we don't need as much
163 // special treatment.
167 # define ACE_SIZEOF_CHAR 1
168 # define ACE_SIZEOF_SHORT 8
169 # define ACE_SIZEOF_INT 8
170 # define ACE_SIZEOF_LONG 8
171 # define ACE_SIZEOF_LONG_LONG 8
172 # define ACE_SIZEOF_FLOAT 8
173 # define ACE_SIZEOF_DOUBLE 8
174 # define ACE_SIZEOF_LONG_DOUBLE 16
175 # define ACE_SIZEOF_VOID_P 8
177 #elif defined(_CRAYT3E)
179 # define ACE_SIZEOF_CHAR 1
180 # define ACE_SIZEOF_SHORT 4
181 # define ACE_SIZEOF_INT 8
182 # define ACE_SIZEOF_LONG 8
183 # define ACE_SIZEOF_LONG_LONG 8
184 # define ACE_SIZEOF_FLOAT 4
185 # define ACE_SIZEOF_DOUBLE 8
186 # define ACE_SIZEOF_LONG_DOUBLE 8
187 # define ACE_SIZEOF_VOID_P 8
191 // Ones to check out at some point
193 /* #define ACE_HAS_SYS_SIGLIST */
195 // C++ Compiler stuff to verify
196 /* #define ACE_NEW_THROWS_EXCEPTIONS */
197 /* #define ACE_HAS_TEMPLATE_TYPEDEFS */
199 // thread issues to check out
200 /* #define ACE_LACKS_TIMEDWAIT_PROTOTYPES */
202 // Cray does seem to support it, in -lnsl and has tiuser.h header
203 /* #define ACE_HAS_TLI */
204 /* #define ACE_HAS_TIUSER_H */
205 /* #define ACE_HAS_TLI_PROTOTYPES */
206 /* #define ACE_LACKS_T_ERRNO */
208 /* #define ACE_LACKS_NAMED_POSIX_SEM */
210 /* #define ACE_HAS_SYS_ERRLIST */
212 #include /**/ "ace/post.h"
213 #endif /* ACE_CONFIG_CRAY_H */