4 The following describes the meaning of the C++ compiler macros that
5 can be set in the config*.h file. When you port ACE to a new platform
6 and/or C++ compiler, make sure that you check to see which of these
7 need to be defined. It's helpful to check the various config*.h files
8 in this directory to see what's already been defined. If you need to
9 add new macros, please send them to me and I'll add them to this file.
11 Eventually, most of this information should be auto-discovered via GNU
12 autoconf, which is currently available in the ACE distribution.
17 ACE_HAS_DUMP Used to enable the dump()
19 defined, the bodies are ifdef
20 out in order to reduce
21 footprint. By default, it is
23 ACE_CAST_CONST Used to work around broken
24 SunCC ANSI casts that require
26 ACE_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES
27 Win32 only. Users want to use
30 ACE_OS::default_win32_security_attributes
31 as the default security
33 ACE_DISABLE_MKTEMP Disable availability of
35 ACE_DISABLE_TEMPNAM Disable availability of
37 ACE_DISABLE_DEBUG_DLL_CHECK Define this if you don't want
38 debug version ACE search for
39 debug version DLLs first
40 before looking for the DLL
42 ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
43 Application will allocate its
44 own object manager. This
46 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
49 ACE_GETNAME_RETURNS_RANDOM_SIN_ZERO Platform does not initialize
50 sockaddr_in::sin_zero field in
51 calls to getpeername() and
52 getsockname(). As a result,
53 memcmp()-based equality
54 comparison can fail despite
55 the fact two sockaddr_in
56 instances refer to the same
58 ACE_MAIN Renames "main (int, char *[])",
59 for platforms such as g++/VxWorks
60 that don't allow "main". Requires
62 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
63 ACE_MKDIR_LACKS_MODE This platform has a mkdir function with
65 ACE_MT_SAFE Compile using multi-thread libraries
66 ACE_NDEBUG Turns off debugging features
67 ACE_NEW_THROWS_EXCEPTIONS Compiler's 'new' throws exception on
68 failure (ANSI C++ behavior).
69 ACE_NLOGGING Turns off the LM_DEBUG and
70 LM_ERROR logging macros...
71 ACE_NTRACE Turns off the tracing feature when = 1.
72 ACE_HAS_TRACE Defined when ACE_NTRACE=0 to
73 help support tracing. Can
74 also be defined by users who
75 implement their own tracing
77 ACE_TRACE_IMPL. Not defining
78 it helps reduce footprint by
79 not requiring applications to
81 ACE_PAGE_SIZE Defines the page size of the
82 system (not used on Win32 or
83 with ACE_HAS_GETPAGESIZE).
84 ACE_TEMPLATES_REQUIRE_PRAGMA Compiler's template mechanism
85 must use a pragma This is used
86 for AIX's C++ compiler.
87 ACE_TEMPLATES_REQUIRE_SOURCE Compiler's template mechanim
88 must see source code (i.e.,
89 .cpp files). This is used for
91 ACE_TIMEPROBE_ASSERTS_FIXED_SIZE If enabled then ACE_Timeprobe_Ex<>::timeprobe()
92 will assert if the end of the
93 buffer is reached. If disabled, the
94 counter wraps around to start
95 at the beginning of the buffer.
96 ACE_TIMER_SKEW If a timed ::select () can return
97 early, then ACE_TIMER_SKEW is the
98 maximum adjustment, in microseconds,
99 that ACE_Timer_Queue uses to
100 compensate for the early return.
101 ACE_TLI_TCP_DEVICE Device the platform uses for TCP on
102 TLI. Only needed if not /dev/tcp.
103 ACE_USE_POLL The OS platform supports the
104 poll() event demultiplexor
105 ACE_USES_ASM_SYMBOL_IN_DLSYM Platform uses assembly symbols
106 instead of C symbols in
108 ACE_USES_STATIC_MFC When linking MFC as a static library is desired
109 ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB Platform has its standard c++
110 library in the namespace std.
111 ACE_USES_EXPLICIT_STD_NAMESPACE Set this when ::fclose doesn't
113 explicitly specify the std
114 namespace. This is needed
115 with the Borland 6 and earlier
117 ACE_USES_GPROF ACE calls getitimer before spawning
118 a new thread and setitimer
119 after spawning the thread in
120 order to overcome the problems
121 of gprof with multithreaded
122 applications. It uses the idea from
123 http://sam.zoy.org/writings/programming/gprof.html
124 ACE_USES_FIFO_SEM Directs ACE to use FIFO based semaphores on
125 platforms that support this (not having full
126 POSIX semaphore support, supporting mkfifo, select
128 ACE_WSOCK_VERSION A parameter list indicating
129 the version of WinSock (e.g.,
130 "1, 1" is version 1.1).
131 ACE_HAS_AIO_CALLS Platform supports POSIX aio* calls.
132 Corresponds to _POSIX_ASYNCHRONOUS_IO
133 constant in <unistd.h>.
134 ACE_HAS_ALT_CUSERID Use ACE's alternate cuserid()
135 implementation since a system
136 cuserid() may not exist, or it
137 is not desirable to use it.
138 The implementation requires
139 ACE_LACKS_PWD_FUNCTIONS to be
140 undefined and that the
141 geteuid() system call exists.
142 ACE_HAS_DINKUM_STL Using the Dinkum STL library
143 ACE_HAS_HEADER_ALLOCATED_CLASS_STATIC_CONST_INT_STOREAGE
144 Non-C++ Complient compilers that automatically
145 provide storeage for class static const int
146 when their declaration is seen. I.e. they object
147 to explicit definitions being seen in the .cpp
149 ACE_DEFAULT_THREAD_KEYS Number of TSS keys, with
150 ACE_HAS_TSS_EMULATION _only_.
152 ACE_DEFAULT_THREAD_STACKSIZE Default stack size specified for the
153 ACE thread spawning methods. Defaults
154 to 0, which defers to OS defaults.
155 ACE_DEFAULT_LD_SEARCH_PATH Specify the platform default search
156 paths. This macro should only be
157 defined on platforms that don't
158 support environment variables at all
160 ACE_THREADS_DONT_INHERIT_LOG_MSG Specify this if you don't want
161 threads to inherit parent
164 ACE_THREAD_MANAGER_USES_SAFE_SPAWN Disable the "check before lock" feature
165 in ACE_Thread_Manager. Defining this
166 macro avoids a potential race condition
167 on platforms with aggressive read/write
169 ACE_HAS_CPU_SET_T Platform delivers cpu_set_t.
170 ACE_HAS_PRIOCNTL OS has priocntl (2).
171 ACE_HAS_RECURSIVE_MUTEXES Mutexes are inherently recursive
173 ACE_HAS_NONRECURSIVE_MUTEXES In addition to recursive mutexes,
174 platform has non-recursive ones also.
175 ACE_HAS_RECV_TIMEDWAIT Platform has the MIT pthreads
177 ACE_HAS_RLIMIT_RESOURCE_ENUM Platform has enum instead of
178 int for first argument to
179 ::{get,set}rlimit (). The
180 value of this macro is the
181 enum definition, e.g., enum
182 __rlimit_resource, for Linux
184 ACE_HAS_RUSAGE_WHO_ENUM Platform has enum instead of
185 int for first argument to
186 ::getrusage (). The value of
187 this macro is the enum
188 definition, e.g., enum
189 __rusage_who, for Linux glibc
191 ACE_HAS_SCANDIR Platform has a native scandir()
192 function. Without any other scandir-
193 related settings, it's assumed that
194 the selector and comparator functions
195 accept const ACE_DIRENT pointers.
196 ACE_SCANDIR_CMP_USES_VOIDPTR The OS's scandir() comparator function
197 is int (*compare)(void*, void*).
198 ACE_SCANDIR_CMP_USES_CONST_VOIDPTR The OS's scandir() comparator function
199 is int (*compare)(const void*,
201 ACE_SCANDIR_SEL_LACKS_CONST The OS's scandir() selector function
202 is int (*selector)(ACE_DIRENT*)
203 ACE_HAS_STDARG_THR_DEST Platform has void (*)(...)
206 destructor (e.g., LynxOS).
207 ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS Platform/compiler supports
208 Win32 structural exceptions
209 ACE_HAS_4_4BSD_SENDMSG_RECVMSG Platform has BSD 4.4
210 sendmsg()/recvmsg() APIs.
211 ACE_HAS_P_READ_WRITE Platform has pread() and
213 ACE_HAS_AIX_BROKEN_SOCKET_HEADER Platform, such as AIX4, needs
218 ACE_HAS_AIX_HI_RES_TIMER Platform has AIX4
220 ACE_HAS_ALLOCA Compiler/platform supports
222 ACE_HAS_ALLOCA_H Compiler/platform has
224 ACE_HAS_ALPHA_TIMER CPU is an Alpha, with the rpcc
225 instruction to read the tick timer.
226 Limited to 32 bits, so not recommended.
227 ACE_HAS_AUTOMATIC_INIT_FINI Compiler/platform correctly
228 calls init()/fini() for shared
230 ACE_HAS_BIG_FD_SET Compiler/platform has typedef
231 u_long fdmask (e.g., Linux and
233 ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR
234 Compiler handles explicit calling of
235 template destructor correctly. See
236 "ace/OS.h" for details.
237 ACE_HAS_BROKEN_ACCEPT_ADDR Platform can't correctly deal
238 with a NULL addr to accept()
239 (e.g, VxWorks < 6.9).
240 ACE_HAS_BROKEN_DGRAM_SENDV Platform sendv() does not work
241 properly with datagrams,
242 i.e. it fails when the iovec
244 ACE_HAS_BROKEN_MAP_FAILED Platform doesn't cast MAP_FAILED
246 ACE_HAS_BROKEN_MSG_H Platform headers don't support
248 ACE_HAS_BROKEN_MMAP_H HP/UX does not wrap the
249 mmap(2) header files with
251 ACE_HAS_BROKEN_NESTED_TEMPLATES MSVC has trouble with defining
252 STL containers for nested
254 ACE_HAS_BROKEN_POSIX_TIME Platform defines struct
255 timespec in <sys/timers.h>
256 ACE_HAS_BROKEN_T_ERROR Compiler/platform has the wrong
257 prototype for t_error(), i.e.,
258 t_error(char *) rather than
259 t_error(const char *).
260 ACE_HAS_BYTESEX_H Platform has <bytesex.h>.
261 ACE_HAS_CANCEL_IO Platform supports the Win32
262 CancelIO() function (WinNT 4.0
264 ACE_HAS_CHARPTR_DL OS/platform uses char * for
265 dlopen/dlsym args, rather than
267 ACE_HAS_CHARPTR_SOCKOPT OS/platform uses char * for
268 sockopt, rather than const
270 ACE_HAS_CLOCK_GETTIME Platform supports POSIX.1b
271 clock_gettime () at least for clock-id CLOCK_REALTIME
272 ACE_HAS_CLOCK_GETTIME_MONOTONIC Platform supports POSIX.1b
273 clock_gettime () with the clock-id CLOCK_MONOTONIC
274 ACE_HAS_CLOCK_SETTIME Platform supports POSIX.1b
276 ACE_HAS_CONFLICTING_XTI_MACROS OS's XTI header file defines some
277 TCP-related macros that netinet/tcp.h
278 also defines, but they conflict
279 (only seen on HP-UX 11).
280 ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES Prototypes for both signal()
281 and struct sigaction are
283 ACE_HAS_CPLUSPLUS_HEADERS Compiler/platform has
284 correctly prototyped header
286 ACE_HAS_DIRENT Compiler/platform has Dirent
288 ACE_HAS_DLL Build ACE using the frigging
290 ACE_HAS_EBCDIC Compile in the ACE code set classes
292 ACE_HAS_EXCEPTIONS Compiler supports C++
294 ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT When a base-class is a
295 specialization of a class template
296 then this class template must be
298 ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION For the GCC compiler
299 on AIX, HPUX and VxWorks we have to
300 explicitly instantiate static template
301 members else we get multiple instances
303 ACE_HAS_GETPAGESIZE Platform supports
304 getpagesize() call (otherwise,
305 ACE_PAGE_SIZE must be defined,
307 ACE_HAS_GETRUSAGE Platform supports the
308 getrusage() system call.
309 ACE_HAS_GETRUSAGE_PROTOTYPE Platform has a getrusage ()
310 prototype in sys/resource.h
311 that differs from the one in
313 ACE_HAS_GPERF The GPERF utility is compiled
315 ACE_HAS_GETIFADDRS This platform has ifaddrs.h and
316 the getifaddrs() function. This
317 is used in preference to
318 the SIOCGIFCONF ioctl call, since
319 it is much simpler and supports
320 IPv6 and non-IP interfaces better.
321 ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT Optimize
322 ACE_Handle_Set::count_bits for
323 select() operations (common
325 ACE_HAS_LLSEEK Platform supports llseek.
326 ACE_HAS_HI_RES_TIMER Compiler/platform supports
327 SunOS high resolution timers
328 ACE_HAS_IDTYPE_T Compiler/platform supports
330 ACE_HAS_INLINED_OSCALLS Inline all the static class OS
331 methods to remove call
333 ACE_HAS_INT_SWAB Platform's swab function has length
334 argument of type int, not ssize_t.
335 ACE_HAS_IP_MULTICAST Platform supports IP multicast
336 ACE_HAS_IPV6 Platform supports IPv6.
337 ACE_HAS_BROKEN_GETHOSTBYADDR_V4MAPPED gethostbyaddr does not handle
338 IPv6-mapped-IPv4 addresses
339 ACE_USES_IPV4_IPV6_MIGRATION Enable IPv6 support in ACE on
340 platforms that don't have IPv6
341 turned on by default.
342 ACE_HAS_NONSTATIC_OBJECT_MANAGER Causes the ACE_Object_Manager
343 instance to be created in main
344 (int, char *[]), instead of as
345 a static (global) instance.
346 ACE_HAS_THR_KEYDELETE Platform supports
347 thr_keydelete (e.g,. UNIXWARE)
348 ACE_HAS_THR_MINSTACK Platform calls thr_minstack()
349 rather than thr_min_stack()
351 ACE_HAS_LIMITED_RUSAGE_T The rusage_t structure has
353 ACE_HAS_LINUX_NPTL Linux platform (with kernel >= 2.6.x)
354 with GLibc including new NPTL (Native
355 POSIX Thread Library).
356 This triggers extended POSIX checks
357 since the NPTL library is (almost) fully
359 ACE_HAS_LOG_MSG_NT_EVENT_LOG Platform supports Windows NT event
360 log so we can create an
361 ACE_Log_Msg_Backend to log to it.
362 ACE_HAS_LONG_MAP_FAILED Platform defines MAP_FAILED as
364 ACE_HAS_MALLOC_STATS Enabled malloc statistics
366 ACE_HAS_MEMCHR Use native implementation of memchr.
367 ACE_HAS_MINIMAL_ACE_OS Disables some #includes in ace/OS.*.
368 ACE_HAS_MFC Platform supports Microsoft
370 ACE_HAS_MSG Platform supports recvmsg and
372 ACE_HAS_MT_SAFE_MKTIME Platform supports MT safe
373 mktime() call (do any of
375 ACE_HAS_MUTEX_TIMEOUTS Compiler supports timed mutex
377 (e.g. pthread_mutex_timedlock()).
378 ACE_HAS_NEW_NOTHROW Compiler offers new (nothrow).
379 ACE_HAS_NONCONST_CHDIR Platform uses non-const char *
381 ACE_HAS_NONCONST_CLOCK_SETTIME Platform uses non-const
382 struct timespec * in call to
384 ACE_HAS_NONCONST_OPENDIR Platform uses non-const char *
386 ACE_HAS_NONCONST_UNLINK Platform uses non-const char *
388 ACE_HAS_NONCONST_GETBY Platform uses non-const char *
389 in calls to gethostbyaddr,
390 gethostbyname, getservbyname
391 ACE_HAS_NONCONST_MSGSND Platform has a non-const
392 parameter to msgsend() (e.g.,
394 ACE_HAS_NONCONST_READV Platform omits const qualifier from
395 iovec parameter in readv() prototype.
396 ACE_HAS_NONCONST_SELECT_TIMEVAL Platform's select() uses
397 non-const timeval* (only found
399 ACE_HAS_NONCONST_SENDMSG Platform omits const qualifier
400 from msghdr parameter in sendmsg()
402 ACE_HAS_NONCONST_SETRLIMIT Platform omits const qualifier
403 from rlimit parameter in setrlimit()
405 ACE_HAS_NONCONST_STAT Platform's stat function has non const
407 ACE_HAS_NONCONST_SWAB Platform's swab function has non
409 ACE_HAS_NONCONST_WRITEV Platform omits const qualifier from
410 iovec parameter in writev() prototype.
411 ACE_HAS_OLD_MALLOC Compiler/platform uses old
412 malloc()/free() prototypes
414 ACE_HAS_ONLY_SCHED_FIFO Platform, e.g., HP NonStop OSS,
415 only supports SCHED_FIFO
416 POSIX scheduling policy.
417 ACE_HAS_ONLY_SCHED_OTHER Platform, e.g., Solaris 2.5,
418 only supports SCHED_OTHER
419 POSIX scheduling policy.
420 ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with
423 ACE_HAS_OSF_TIMOD_H Platform supports the OSF TLI
425 ACE_HAS_3_PARAM_WCSTOK Platform has 3-parameter version
426 of wcstok(), which was added in
427 1994 in the ISO C standard Normative
428 Addendum 1. Other standards like XPG4
429 define a 2 parameter wcstok().
430 ACE_HAS_PENTIUM Platform is an Intel Pentium
432 ACE_HAS_POLL Platform contains <poll.h>
433 ACE_HAS_POSITION_INDEPENDENT_POINTERS Platform supports
434 "position-independent" features
435 provided by ACE_Based_Pointer<>.
436 ACE_HAS_POSIX_MESSAGE_PASSING Platform supports POSIX message queues.
437 Corresponds to _POSIX_MESSAGE_PASSING
438 constant in <unistd.h>.
439 ACE_HAS_POSIX_NONBLOCK Platform supports POSIX
441 ACE_HAS_POSIX_REALTIME_SIGNALS Platform supports POSIX RT signals.
442 Corresponds to _POSIX_REALTIME_SIGNALS
443 constant in <unistd.h>.
444 ACE_HAS_POSIX_SEM Platform supports POSIX
445 real-time semaphores (e.g.,
446 VxWorks and Solaris). Corresponds
447 to _POSIX_SEMAPHORES constant
449 ACE_HAS_POSIX_SEM_TIMEOUT Platform supports timed wait operation
450 on POSIX realtime semaphores.
451 ACE_HAS_POSIX_TIME Platform supports the POSIX
453 ACE_HAS_PROC_FS Platform supports the /proc
454 file system and defines tid_t
456 ACE_HAS_POWERPC_TIMER Platform supports PowerPC
458 ACE_HAS_PRUSAGE_T Platform supports the
460 ACE_HAS_PTHREADS Platform supports POSIX
461 Pthreads, of one form or
462 another. This macro says the
463 platform has a pthreads
464 variety - should also define
465 one of the below to say which
466 one. Also may need some
467 ACE_HAS_... thing for
469 ACE_HAS_PTHREADS_UNIX98_EXT Platform has the UNIX98 extensions to
471 ACE_HAS_PTHREAD_ATTR_SETCREATESUSPEND_NP Platform has
472 pthread_attr_setcreatesuspend_np().
473 ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP Platform has pthread_condattr_setkind_np().
474 ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP Platform has
475 pthread_mutexattr_setkind_np().
476 ACE_HAS_PTHREAD_GETCONCURRENCY Platform has pthread_getconcurrency().
477 ACE_HAS_PTHREAD_SETCONCURRENCY Platform has pthread_setconcurrency().
478 ACE_HAS_PTHREAD_PROCESS_ENUM pthread.h declares an enum with
479 PTHREAD_PROCESS_PRIVATE and
480 PTHREAD_PROCESS_SHARED values.
481 ACE_HAS_PTHREAD_SETSTACK Platform has pthread_attr_setstack().
482 ACE_HAS_PTHREAD_NP_H Platform has <pthread_np.h> FreeBSD
483 declares non-portable (*_np) pthread
484 functions in this header.
485 ACE_HAS_PURIFY Purify'ing. Set by wrapper_macros.GNU.
486 ACE_HAS_QUANTIFY Quantify'ing. Set by wrapper_macros.GNU.
487 ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS Platform will recurse
488 infinitely on thread exits
489 from TSS cleanup routines
491 ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant
492 functions (i.e., all the POSIX
494 ACE_HAS_XPG4_MULTIBYTE_CHAR Platform has support for
495 multi-byte character support
496 compliant with the XPG4
497 Worldwide Portability
498 Interface wide-character
500 ACE_HAS_REGEX Platform supports the POSIX
501 regular expression library
502 ACE_HAS_DLSYM_SEGFAULT_ON_INVALID_HANDLE For OpenBSD: The dlsym call
503 segfaults when passed an invalid
504 handle. Other platforms handle
505 this more gracefully.
506 ACE_HAS_SELECT_H Platform has special header for select().
507 ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL For Win32: Use Select_Reactor
508 as default implementation of
511 ACE_HAS_SEMUN Compiler/platform defines a
512 union semun for SysV shared
514 ACE_HAS_SET_T_ERRNO Platform has a function to set
515 t_errno (e.g., Tandem).
516 ACE_HAS_SIGACTION_CONSTP2 Platform's sigaction() function takes
517 const sigaction* as 2nd parameter.
518 ACE_HAS_SIGINFO_T Platform supports SVR4
520 ACE_HAS_SIGSUSPEND Platform supports sigsuspend()
521 ACE_HAS_SIGISMEMBER_BUG Platform has bug with
522 sigismember() (HP/UX 11).
523 ACE_HAS_SIGNAL_OBJECT_AND_WAIT Platform supports the Win32
524 SignalObjectAndWait() function
525 (WinNT 4.0 and beyond).
526 ACE_HAS_SIGWAIT Platform/compiler has the
528 ACE_HAS_SIG_ATOMIC_T Compiler/platform defines the
530 ACE_HAS_SIG_C_FUNC Compiler requires extern "C"
531 functions for signals.
532 ACE_HAS_SIZET_SOCKET_LEN OS/compiler uses size_t *
533 rather than int * for socket
535 ACE_HAS_SOCKADDR_IN_SIN_LEN Platform has sin_len member in struct
537 ACE_HAS_SOCKADDR_IN6_SIN_LEN Platform has sin6_len member in struct
539 ACE_HAS_SOCKADDR_MSG_NAME Platform requires (struct
540 sockaddr *) for msg_name field
542 ACE_HAS_SOCKLEN_T Platform provides socklen_t
543 type, such as Linux with
545 ACE_HAS_SOCK_BUF_SIZE_MAX Platform limits the maximum socket
547 ACE_HAS_SPARCWORKS_401_SIGNALS Compiler has brain-damaged
548 SPARCwork SunOS 4.x signal
550 ACE_HAS_SSIZE_T Compiler supports the ssize_t
552 ACE_HAS_STHREADS Platform supports Solaris
554 ACE_HAS_STANDARD_CPP_LIBRARY Platform/compiler supports
556 ACE_HAS_STDCPP_STL_INCLUDES Standard C++ headers can be
557 included in the standard way.
558 e.g. #include <vector>
559 ACE_HAS_STRBUF_T Compiler/platform supports
561 ACE_HAS_STRDUP_EMULATION Use ACE's strdup() emulation (even
562 if platform has a native strdup()).
563 This is useful if you need control
564 over what memory allocator is used.
565 ACE_HAS_WCSDUP_EMULATION Use ACE's wcsdup() emulation (even
566 if platform has a native wcsdup()).
567 This is useful if you need control
568 over what memory allocator is used.
569 ACE_HAS_STRNLEN Platform supports strnlen(3).
570 ACE_HAS_STREAMS Platform supports STREAMS
571 ACE_HAS_STREAM_PIPES Platform supports STREAM pipes
572 ACE_HAS_STRICT Use the STRICT compilation mode on Win32.
573 ACE_HAS_STRING_CLASS Platform/Compiler supports a
574 String class (e.g., GNU or
576 ACE_HAS_STRUCT_NETDB_DATA Compiler/platform has strange
577 hostent API for socket *_r()
579 ACE_HAS_SUNOS4_SIGNAL_T Compiler has horrible SunOS
580 4.x signal handlers...
581 ACE_HAS_SVR4_DYNAMIC_LINKING Compiler/platform supports
582 SVR4 dynamic linking semantics
583 ACE_HAS_SVR4_GETTIMEOFDAY Compiler/platform supports
584 SVR4 gettimeofday() prototype
585 ACE_HAS_SVR4_SIGNAL_T Compiler/platform supports
587 ACE_HAS_SVR4_TLI Compiler/platform supports
588 SVR4 TLI; that is, TLI with extensions
589 like t_getname(). This is sometimes
590 used as a pseudonym for TLI on SunOS4.
591 This is a modifier to ACE_HAS_TLI and
592 isn't used if ACE_HAS_XTI is set.
593 ACE_HAS_SYSCALL_GETRUSAGE HP/UX has an undefined syscall
595 ACE_HAS_SYSENT_H Platform provides <sysent.h>
597 ACE_HAS_SYSV_SYSINFO Platform supports system
598 configuration information
599 ACE_HAS_SYSV_IPC Platform supports System V IPC
600 (most versions of UNIX, but
602 ACE_HAS_SYS_FILIO_H Platform provides
604 ACE_HAS_SYS_LOADAVG_H Compiler/platform contains the
605 <sys/loadavg.h> file.
606 ACE_HAS_SYS_PSTAT_H Compiler/platform contains the
608 ACE_HAS_SYS_SOCKIO_H Compiler/platform provides the
610 ACE_HAS_SYS_SYSCALL_H Compiler/platform contains the
611 <sys/syscall.h> file.
612 ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA Compiler's template
613 instantiation mechanism
614 supports the use of "#pragma
615 instantiate". Edison Design
616 Group compilers, e.g., SGI C++
617 and Green Hills 1.8.8 and
619 ACE_HAS_TEMPLATE_TYPEDEFS Compiler implements templates
620 that support typedefs inside
621 of classes used as formal
622 arguments to a template
624 ACE_HAS_TERMIO Platform has terminal ioctl
625 flags like TCGETS and TCSETS and
627 ACE_HAS_TERMIOS Platform has POSIX terminal
628 interface and termios struct.
629 ACE_HAS_LAZY_MAP_MANAGER ACE supports lazy Map Managers
630 that allow deletion of entries
631 during active iteration.
632 ACE_HAS_THREADS Platform supports threads
633 ACE_HAS_THREAD_SAFE_ACCEPT Platform allows multiple
634 threads to call accept() on
635 the same port (e.g., WinNT).
636 ACE_HAS_THREAD_SELF Platform has thread_self()
637 rather than pthread_self()
638 (e.g., DCETHREADS and AIX)
639 ACE_HAS_THREAD_SPECIFIC_STORAGE Compiler/platform has
640 thread-specific storage
641 ACE_HAS_THR_C_DEST The pthread_keycreate()
642 routine *must* take extern C
644 ACE_HAS_THR_C_FUNC The pthread_create() routine
647 ACE_HAS_TIMEZONE Platform/compiler supports
648 global "timezone" variable.
649 ACE_HAS_TIMEZONE_GETTIMEOFDAY Platform/compiler supports
650 timezone * as second parameter
652 ACE_HAS_TIMOD_H Platform supports TLI timod
654 ACE_HAS_TIUSER_H Platform provides TLI tiuser.h
656 ACE_HAS_TLI Platform supports TLI. Also
657 see ACE_TLI_TCP_DEVICE. If the
658 platform supports XTI, set ACE_HAS_XTI
660 ACE_HAS_TLI_PROTOTYPES Platform provides TLI function
662 ACE_HAS_TR24731_2005_CRT The platform provides an implementation
663 of C99 draft TR24731 (October 2005),
664 C run-time with more secure parameters.
665 ACE_HAS_TSS_EMULATION ACE provides TSS emulation.
667 ACE_DEFAULT_THREAD_KEYS.
668 ACE_HAS_UALARM Platform supports ualarm()
669 ACE_HAS_UCONTEXT_T Platform supports ucontext_t
670 (which is used in the extended
672 ACE_HAS_UNION_WAIT The wait() system call takes a
673 (union wait *) rather than int
675 ACE_HAS_VALGRIND Running with valgrind
676 ACE_HAS_VERBOSE_NOTSUP Prints out console message in
677 ACE_NOTSUP. Useful for
678 tracking down origin of
680 ACE_HAS_VERSIONED_NAMESPACE Wrap all library code within a
681 "versioned namespace" to
682 prevent symbol conflicts with
683 other versions of ACE shared
684 libraries in third party
685 libraries. Default namespace
686 name may be overridden by
687 defining preprocessor symbol
688 ACE_VERSIONED_NAMESPACE_NAME
690 ACE_LACKS_INTMAX_T Platform lacks the intmax_t type
691 ACE_LACKS_UINTMAX_T Platform lacks the uintmax_t type.
692 ACE_LACKS_INTPTR_T Platform lacks the intptr_t type
693 ACE_LACKS_UINTPTR_T Platform lacks the uintptr_t type.
695 ACE_HAS_INT8_T Platform provides the int8_t type.
696 ACE_HAS_INT16_T Platform provides the int16_t type.
697 ACE_HAS_INT32_T Platform provides the int32_t type.
698 ACE_HAS_INT64_T Platform provides the int64_t type.
699 ACE_HAS_UINT8_T Platform provides the uint8_t type.
700 ACE_HAS_UINT16_T Platform provides the uint16_t type.
701 ACE_HAS_UINT32_T Platform provides the uint32_t type.
702 ACE_HAS_UINT64_T Platform provides the uint64_t type.
704 ACE_INT8_TYPE Specific type to use for ACE_INT8.
705 If not defined, ACE will attempt to
706 determine the correct type
707 unless ACE_HAS_INT8_T has been defined
708 ACE_INT16_TYPE Specific type to use for ACE_INT16.
709 If not defined, ACE will attempt to
710 determine the correct type
711 unless ACE_HAS_INT16_T has been defined
712 ACE_INT32_TYPE Specific type to use for ACE_INT32.
713 If not defined, ACE will attempt to
714 determine the correct type
715 unless ACE_HAS_INT32_T has been defined
716 ACE_INT64_TYPE Specific type to use for ACE_INT64.
717 If not defined, ACE will attempt to
718 determine the correct type
719 unless ACE_HAS_INT64_T has been defined
720 ACE_UINT8_TYPE Specific type to use for ACE_UINT8.
721 If not defined, ACE will attempt to
722 determine the correct type
723 unless ACE_HAS_UINT8_T has been defined
724 ACE_UINT16_TYPE Specific type to use for ACE_UINT16.
725 If not defined, ACE will attempt to
726 determine the correct type
727 unless ACE_HAS_UINT16_T has been defined
728 ACE_UINT32_TYPE Specific type to use for ACE_UINT32.
729 If not defined, ACE will attempt to
730 determine the correct type
731 unless ACE_HAS_UINT32_T has been defined
732 ACE_UINT64_TYPE Specific type to use for ACE_UINT64.
733 If not defined, ACE will attempt to
734 determine the correct type
735 unless ACE_HAS_UINT64_T has been defined
737 ACE_INT8_FORMAT_SPECIFIER String literal containing *printf
738 format specifier (including the '%')
739 to be used for ACE_INT8 values. If
740 not defined, ACE will attempt to
741 determine the correct setting.
742 ACE_INT16_FORMAT_SPECIFIER String literal containing *printf
743 format specifier (including the '%')
744 to be used for ACE_INT16 values. If
745 not defined, ACE will attempt to
746 determine the correct setting.
747 ACE_INT32_FORMAT_SPECIFIER String literal containing *printf
748 format specifier (including the '%')
749 to be used for ACE_INT32 values. If
750 not defined, ACE will attempt to
751 determine the correct setting.
752 ACE_INT64_FORMAT_SPECIFIER String literal containing *printf
753 format specifier (including the '%')
754 to be used for ACE_INT64 values. If
755 not defined, ACE will attempt to
756 determine the correct setting.
757 ACE_UINT8_FORMAT_SPECIFIER String literal containing *printf
758 format specifier (including the '%')
759 to be used for ACE_UINT8 values. If
760 not defined, ACE will attempt to
761 determine the correct setting.
762 ACE_UINT16_FORMAT_SPECIFIER String literal containing *printf
763 format specifier (including the '%')
764 to be used for ACE_UINT16 values. If
765 not defined, ACE will attempt to
766 determine the correct setting.
767 ACE_UINT32_FORMAT_SPECIFIER String literal containing *printf
768 format specifier (including the '%')
769 to be used for ACE_UINT32 values. If
770 not defined, ACE will attempt to
771 determine the correct setting.
772 ACE_UINT64_FORMAT_SPECIFIER String literal containing *printf
773 format specifier (including the '%')
774 to be used for ACE_UINT64 values. If
775 not defined, ACE will attempt to
776 determine the correct setting.
778 ACE_HAS_VOIDPTR_GETTIMEOFDAY Platform/compiler supports
779 void * as second parameter
781 ACE_HAS_VOIDPTR_MMAP Platform requires void * for
783 ACE_HAS_VOIDPTR_SOCKOPT OS/compiler uses void * arg 4
784 setsockopt() rather than const
786 ACE_HAS_WCSNLEN Platform supports wcsnlen(3).
787 ACE_HAS_WIN32_OVERLAPPED_IO Platform has Windows overlapped I/O;
788 requires I/O completion ports.
789 ACE_HAS_WIN32_TRYLOCK The Win32 platform support
790 TryEnterCriticalSection()
791 (WinNT 4.0 and beyond)
792 ACE_HAS_WINSOCK2 The Win32 platform supports
794 ACE_HAS_XLI Platform has the XLI version
796 ACE_HAS_XTI Platform has XTI
797 (X/Open-standardized superset
798 of TLI). Implies ACE_HAS_TLI
799 but uses a different header
801 ACE_INITIALIZE_MEMORY_BEFORE_USE Memory is explicitly initialized before
802 use. Useful when using a profiler like
804 ACE_HRTIME_T_IS_BASIC_TYPE ACE_hrtime_t is a basic type that
805 doesn't require ACE_U64_TO_U32
807 ACE_LACKS_ACCESS Platform lacks access() (e.g.,
809 ACE_LACKS_ACE_IOSTREAM Platform can not build
810 ace/IOStream{,_T}.cpp. This
811 does not necessarily mean that
812 the platform does not support
814 ACE_LACKS_AUTO_MMAP_REPLACEMENT No system support for replacing any
816 ACE_LACKS_BSEARCH Compiler/platform lacks the
817 standard C library bsearch()
819 ACE_LACKS_CLOSEDIR Platform lacks closedir and the closedir
820 emulation must be used
821 ACE_LACKS_OPENDIR Platform lacks opendir and the opendir
822 emulation must be used
823 ACE_LACKS_READDIR Platform lacks readdir and the readdir
824 emulation must be used
825 ACE_LACKS_COND_TIMEDWAIT_RESET pthread_cond_timedwait does
826 *not* reset the time argument
827 when the lock is acquired.
828 ACE_LACKS_CONST_STRBUF_PTR Platform uses struct strbuf *
829 rather than const struct
830 strbuf * (e.g., HP/UX 10.x)
831 ACE_LACKS_CONST_TIMESPEC_PTR Platform forgot const in
832 cond_timewait (e.g., HP/UX).
833 ACE_LACKS_COND_T Platform lacks condition
834 variables (e.g., Win32 and
836 ACE_LACKS_CONDATTR_PSHARED Platform has no implementation
838 pthread_condattr_setpshared(),
839 even though it supports
841 ACE_LACKS_DIFFTIME Platform lacks difftime() implementation
842 ACE_LACKS_DUP2 Platform lacks dup2().
843 ACE_LACKS_FCNTL Platform lacks POSIX-style fcntl ().
844 ACE_LACKS_FSYNC Platform lacks fsync().
845 ACE_LACKS_INLINE_FUNCTIONS Platform can't handle "inline"
847 ACE_LACKS_EXEC Platform lacks the exec()
848 family of system calls (e.g.,
849 Win32, VxWorks, Chorus)
850 ACE_LACKS_FILELOCKS Platform lacks file locking
852 ACE_LACKS_FLOATING_POINT Platform does not support
853 floating point operations
854 (e.g., certain Chorus hardware
856 ACE_LACKS_FORK Platform lacks the fork()
857 system call (e.g., Win32,
859 ACE_LACKS_GETOPT_PROTOTYPE Platform lacks the getopt()
860 prototype (e.g., LynxOS)
861 ACE_LACKS_GETPGID Platform lacks getpgid() call
862 (e.g., Win32, Chorus, and
864 ACE_LACKS_GETSERVBYNAME Platforms lacks
865 getservbyname() (e.g., VxWorks
867 ACE_LACKS_GETIPNODEBYADDR Platform lacks getipnodebyaddr().
868 ACE_LACKS_GETIPNODEBYNAME Platform lacks getipnodebyname().
869 ACE_LACKS_INET_ATON Platform lacks the inet_aton()
871 ACE_LACKS_INET_ATON_PROTOTYPE Platform/compiler lacks the
872 inet_aton() prototype (e.g.,
874 ACE_LACKS_IOSTREAM_FX iostream header does not
875 declare ipfx (), opfx (),
877 ACE_LACKS_KEY_T Platform lacks key_t (e.g.,
878 Chorus, VxWorks, Win32)
879 ACE_LACKS_LINEBUFFERED_STREAMBUF Platform lacks streambuf
881 ACE_LACKS_LONGLONG_T Compiler/platform does not
882 support the signed or unsigned long
884 ACE_LACKS_LSTAT Platform lacks the lstat() function.
885 ACE_LACKS_MADVISE Platform lacks madvise()
887 ACE_LACKS_MALLOC_H Platform lacks malloc.h
888 ACE_LACKS_MEMORY_H Platform lacks memory.h (e.g.,
890 ACE_LACKS_MKFIFO Platform lacks mkfifo() e.g.,
891 VxWorks, Chorus, pSoS, and WinNT.
892 ACE_LACKS_MKTEMP Platform lacks the mktemp() function.
893 ACE_LACKS_MKTEMP_PROTOTYPE Platform/compiler lacks the
894 mktemp() prototype (e.g.,
896 ACE_LACKS_MKSTEMP Platform lacks the mkstemp() function.
897 ACE_LACKS_MKSTEMP_PROTOTYPE Platform/compiler lacks the
898 mkstemp() prototype (e.g.,
900 ACE_LACKS_MMAP The platform doesn't have
901 mmap(2) (e.g., SCO UNIX).
902 ACE_LACKS_MODE_MASKS Platform/compiler doesn't have
904 ACE_LACKS_MPROTECT The platform doesn't have
905 mprotect(2) (e.g., EPLX real
906 time OS from CDC (based on
908 ACE_LACKS_MSG_ACCRIGHTS Platform defines ACE_HAS_MSG,
909 but lacks msg_accrights{,len}.
910 ACE_LACKS_MSG_WFMO Platform lacks
911 MsgWaitForMultipleObjects
912 (only needs to be defined when
913 ACE_WIN32 is also defined).
914 ACE_LACKS_MSYNC Platform lacks msync() (e.g.,
916 ACE_LACKS_MUTEXATTR_PSHARED Platform lacks
917 pthread_mutexattr_setpshared().
918 ACE_LACKS_NAMED_POSIX_SEM Platform lacks named POSIX
919 semaphores (e.g., Chorus)
920 ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support
921 reentrant netdb functions
927 ACE_LACKS_NEW_H OS doesn't have, or we don't want to
929 ACE_LACKS_NULL_PTHREAD_STATUS OS requires non-null status pointer
930 for ::pthread_join ().
931 ACE_LACKS_NUMERIC_LIMITS Platform lacks std::numeric_limits<>.
932 ACE_LACKS_PERFECT_MULTICAST_FILTERING Platform lacks IGMPv3 "perfect" filtering
933 of multicast dgrams at the socket level.
934 If == 1, ACE_SOCK_Dgram_Mcast will bind
935 the first joined multicast group to the
936 socket, and all future joins on that
937 socket will fail with an error.
938 ACE_LACKS_PRAGMA_ONCE Compiler complains about #pragma once
939 ACE_LACKS_PRI_T Platform lacks pri_t (e.g.,
940 Tandem NonStop UNIX).
941 ACE_LACKS_PTHREAD_CANCEL Platform lacks
943 ACE_LACKS_PTHREAD_SCOPE_PROCESS Platform lacks support for
944 PTHREAD_SCOPE_PROCESS
945 ACE_LACKS_PTHREAD_SIGMASK Platform lacks pthread_sigmask ().
946 ACE_LACKS_PTHREAD_THR_SIGSETMASK Platform lacks
947 pthread_thr_sigsetmask (e.g.,
948 MVS, HP/UX, and OSF/1 3.2)
949 ACE_LACKS_PUTENV_PROTOTYPE Platform/compiler lacks the
950 putenv() prototype (e.g.,
952 ACE_LACKS_PWD_REENTRANT_FUNCTIONS Platform lacks getpwnam_r()
953 methods (e.g., SGI 6.2).
954 ACE_LACKS_QSORT Compiler/platform lacks the
955 standard C library qsort()
957 ACE_LACKS_READLINK Platform lacks the readlink() function.
958 ACE_LACKS_READV Platform doesn't define readv,
960 ACE_LACKS_RENAME Platform lacks rename().
961 ACE_LACKS_RLIMIT Platform/compiler lacks
962 {get,set}rlimit() function
963 (e.g., VxWorks, Chorus, and
965 ACE_LACKS_RLIMIT_PROTOTYPE Platform/compiler lacks
966 {get,set}rlimit() prototypes
968 ACE_LACKS_READDIR_R Platform uses ACE_HAS_DIRENT
969 but does not have readdir_r
971 ACE_LACKS_REALPATH Platform/compiler lacks
972 realpath () function (e.g.,
974 ACE_LACKS_RECVMSG Platform lacks recvmsg()
976 ACE_LACKS_RWLOCK_T Platform lacks readers/writer
978 ACE_LACKS_RWLOCKATTR_PSHARED Platform lacks
979 pthread_rwlockattr_setpshared().
980 ACE_LACKS_SBRK Platform lacks a working
981 sbrk() (e.g., Win32 and
983 ACE_LACKS_SCANDIR_PROTOTYPE Platform/compiler lacks
986 ACE_LACKS_SEEKDIR Platform uses ACE_HAS_DIRENT
987 but does not have seekdir ().
988 ACE_LACKS_SEMBUF_T Platform lacks struct sembuf
989 (e.g., Win32 and VxWorks)
990 ACE_LACKS_SETDETACH Platform lacks
991 pthread_attr_setdetachstate()
993 ACE_LACKS_SETSCHED Platform lacks
994 pthread_attr_setsched()
996 ACE_LACKS_SIGACTION Platform lacks struct
997 sigaction (e.g., Win32 and
999 ACE_LACKS_SIGNED_CHAR Platform lacks "signed char"
1001 ACE_LACKS_SIGSET Platform lacks signal sets
1002 (e.g., Chorus and Win32)
1003 ACE_LACKS_STRPTIME Platform/compiler lacks the strptime()
1005 ACE_LACKS_WCSCHR Platform/compiler lacks wcschr()
1006 ACE_LACKS_STRDUP Platform/compiler lacks strdup()
1007 ACE_LACKS_WCSDUP Platform/compiler lacks wcsdup()
1008 ACE_LACKS_WCSRCHR Platform/compiler lacks wcsrchr()
1009 ACE_LACKS_SWAB Platform/compiler lacks
1011 ACE_LACKS_SYS_MSG_H Platform lacks sys/msg.h
1012 (e.g., Chorus and VxWorks)
1013 ACE_LACKS_SYS_PARAM_H Platform lacks <sys/param.h>
1015 ACE_LACKS_SENDMSG Platform lacks sendmsg()
1017 ACE_LACKS_SI_ADDR Platform lacks the si_addr
1018 field of siginfo_t (e.g.,
1019 VxWorks and HP/UX 10.x)
1020 ACE_LACKS_SYMLINKS Platform lacks symbolic links
1021 ACE_LACKS_SYSV_SHMEM Platform lacks System V shared
1022 memory (e.g., Win32 and
1024 ACE_LACKS_SIGINFO_H Platform lacks the siginfo.h
1025 include file (e.g., MVS)
1026 ACE_LACKS_SOCKET_BUFSIZ Platform doesn't support
1028 ACE_LACKS_SOCKETPAIR Platform lacks the
1029 socketpair() call (e.g., SCO
1031 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES Compiler doesn't support
1032 static data member templates
1033 ACE_LACKS_STRCASECMP Compiler/platform lacks
1034 strcasecmp() (e.g., DG/UX,
1036 ACE_LACKS_STRCASECMP_PROTOTYPE Platform/compiler lacks the
1037 strcasecmp() prototype (e.g.,
1039 ACE_LACKS_STRNCASECMP_PROTOTYPE Platform/compiler lacks the
1040 strncasecmp() prototype (e.g.,
1042 ACE_LACKS_STRRECVFD Platform doesn't define struct
1044 ACE_LACKS_SYSCALL Platform doesn't have
1046 ACE_LACKS_T_ERRNO Header files lack t_errno for
1048 ACE_LACKS_TCP_NODELAY OS does not support TCP_NODELAY.
1049 ACE_LACKS_TELLDIR Platform uses ACE_HAS_DIRENT
1050 but does not have telldir ().
1051 ACE_LACKS_THREAD_STACK_SIZE Platform lacks
1052 pthread_attr_setstacksize()
1053 (e.g., Linux pthreads)
1054 ACE_LACKS_THR_CONCURRENCY_FUNCS (ONLY APPLIES TO SOLARIS)
1055 Platform does not support
1056 thr_getconcurrency/thr_setconcurrency
1057 functions, or their implementation
1058 is effectively a "no-op". This
1059 notably applies for Solaris >= 5.9.
1060 Note that if you build on Solaris 8
1061 and run on Solaris 9+, you can
1062 encounter thread creation errors
1063 unless you rebuild on the target
1065 ACE_LACKS_TIMEDWAIT_PROTOTYPES MIT pthreads platform lacks
1066 the timedwait prototypes
1067 ACE_LACKS_TIMESPEC_T Platform does not define
1068 timepec_t as a typedef for
1070 ACE_LACKS_TRUNCATE Platform doesn't have truncate()
1072 ACE_LACKS_UALARM_PROTOTYPE Platform/compiler lacks the
1073 ualarm() prototype (e.g.,
1075 ACE_LACKS_CHAR_RIGHT_SHIFTS Compiler does not have any istream
1076 operator>> for chars, u_chars, or
1078 ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS Compiler does not have
1079 operator>> (istream &, u_char *) or
1080 operator>> (istream &, signed char *)
1081 ACE_LACKS_UCONTEXT_H Platform lacks the ucontext.h
1083 ACE_LACKS_UMASK Platform lacks umask function
1084 ACE_LACKS_UNBUFFERED_STREAMBUF Platform lacks streambuf
1086 ACE_LACKS_UNISTD_H Platform lacks the unistd.h
1087 file (e.g., VxWorks and Win32)
1088 ACE_LACKS_UNIX_DOMAIN_SOCKETS ACE platform has no UNIX
1090 ACE_LACKS_UNIX_SIGNALS Platform lacks full signal
1091 support (e.g., Win32 and
1093 ACE_LACKS_UNSIGNEDLONGLONG_T Compiler/platform does not
1094 support the unsigned long
1096 ACE_LACKS_UTSNAME_T Platform lacks struct utsname
1097 (e.g., Win32 and VxWorks)
1098 ACE_LACKS_UNAME Platform lacks uname calls
1099 ACE_LACKS_WAIT The platform lacks wait
1100 ACE_LACKS_WIN32_GETPROCESSTIMES The Windows platform doesn't have
1102 ACE_LACKS_WIN32_MOVEFILEEX The Windows platform doesn't have
1104 ACE_LACKS_WIN32_SECURITY_DESCRIPTORS The Windows platform doesn't have
1105 security descriptor support.
1106 ACE_LACKS_WRITEV Platform doesn't define
1107 writev, so use our own
1109 ACE_NEEDS_DEV_IO_CONVERSION Necessary with some compilers
1110 to pass ACE_TTY_IO as
1111 parameter to DEV_Connector.
1112 ACE_NEEDS_FUNC_DEFINITIONS Compiler requires a definition
1113 for a "hidden" function, e.g.,
1114 a private, unimplemented copy
1115 constructor or assignment
1116 operator. The SGI C++
1117 compiler needs this, in
1118 template classes, with
1119 ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA.
1120 ACE_NEEDS_HUGE_THREAD_STACKSIZE Required by platforms with
1121 small default stacks.
1122 ACE_NEEDS_LWP_PRIO_SET OS has LWPs, and when the
1123 priority of a bound thread is
1124 set, then the LWP priority
1126 ACE_NEEDS_SCHED_H Platform needs to #include
1128 to get thread scheduling
1131 ACE_NO_WIN32_LEAN_AND_MEAN If this is set, then ACE does not
1132 define WIN32_LEAN_AND_MEAN before
1133 including <windows.h>. Needed for
1134 code that uses non-lean Win32
1135 facilities such as COM.
1137 ACE_SHM_OPEN_REQUIRES_ONE_SLASH The path specified on shm_open() must
1138 have a leading, single slash and not
1139 have any other slashes.
1141 ACE_WSTRING_HAS_USHORT_SUPPORT If a platform has wchar_t as a
1143 ACE_WString doesn't have a
1144 constructor that understands
1145 an ACE_USHORT16 string. So
1147 one. (mostly used my ACE Name
1150 ACE_HAS_BROKEN_PREALLOCATED_OBJECTS_AFTER_FORK
1151 Under QNX/RTP the objects preallocated
1152 in ACE_OS_Object_Manager cannot be
1153 destroyed after a fork() call.
1154 Since these objects are only destroyed
1155 at application shutdown we take the
1156 simpler approach of not destroying
1158 Both QNX/RTP and LynxOS suffer from
1161 ACE_DONT_INIT_WINSOCK This definition defines whether or not
1162 to explicitly initialize Winsock during
1163 ACE::init() (i.e., whether WSAStartup()
1164 is called). Some Win32 platforms have
1165 dependent characteristics between
1166 ACE initialization and
1167 network initialization.
1169 ----------------------------------------
1171 The following macros determine the svc.conf file format ACE uses.
1175 ACE_HAS_CLASSIC_SVC_CONF This macro forces ACE to use
1176 the classic svc.conf format.
1178 ACE_HAS_XML_SVC_CONF This macro forces ACE to use the XML
1181 ACE_USES_CLASSIC_SVC_CONF This macro should be defined
1182 as 0 or 1, depending on the
1183 preferred svc.conf file
1184 format. Defining this macro
1185 to 0 means ACE will use XML
1186 svc.conf file format.
1187 Defining it to 1 will force
1188 ACE to use the classic
1190 ** This macro takes precedence
1191 ** over previous two macros.
1193 ----------------------------------------
1194 The following is a partial list of where some of these macros are used
1195 in the code. This list was originally compiled by Jam Hamidi
1196 (jh1@core01.osi.com). It is now hopelessly out of date. Hopefully,
1197 someone will come along and update it....
1203 libsrc/IPC_SAP/SOCK_SAP/SOCK_Connect.C
1204 for allocation of iovp
1206 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1207 for alocation of iovp
1210 alloca() allocates size bytes of space in the stack frame of
1211 the caller, and returns a pointer to the allocated block.
1212 This temporary space is automatically freed when the caller
1213 returns. Note: if the allocated block is beyond the current
1214 stack limit, the resulting behavior is undefined.
1220 in HPUX it has to do new and delete. Affects performance.
1223 ACE_HAS_AUTOMATIC_INIT_FINI:
1224 ----------------------------
1227 libsrc/Service_Configurator/Service_Repository.i
1228 libsrc/Service_Configurator/Parse_Node.i
1229 include/Parse_Node.i
1230 include/Service_Repository.i
1233 _init() initializes a loadable module. It is called before
1234 any other routine in a loadable module.
1235 _info() returns information about a loadable module.
1236 _fini() should return the return value from mod_remove(9F).
1237 This flag if set, doesn't do anything. If not set, forces
1238 _init() and _fini() to be executed as is:
1239 dlsym ((char *) handle, "_fini").
1243 Maybe have to look into shl_load( ), shl_definesym( ),
1244 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1245 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1246 Means Service Configurator won't be available.
1250 ACE_HAS_CPLUSPLUS_HEADERS:
1251 --------------------------
1260 If this is not defined, libc.h and osfcn.h get included.
1261 Only needed for older compiler/OS platforms that don't
1262 provide standard C++ header files in /usr/include.
1264 ACE_HAS_HI_RES_TIMER:
1265 ---------------------
1268 libsrc/Misc/High_Res_Timer.h
1269 libsrc/Misc/High_Res_Timer.C
1270 include/High_Res_Timer.h
1273 C++ wrapper around gethrtime(), which returns a long long.
1274 gethrtime() returns the current high-resolution real time.
1275 Time is expressed as nanoseconds since some arbitrary time
1276 in the past; it is not correlated in any way to the time of
1277 day, and thus is not subject to resetting, drifting, etc.
1280 look into: getclock(), reltimer(), getitimer()
1281 maybe even vtimes structure vm_utime, vm_stime ?
1301 ACE_HAS_POSIX_NONBLOCK:
1302 -----------------------
1311 if defined, sets ACE_NONBLOCK and O_NONBLOCK
1312 O_NONBLOCK is used in libsrc/Misc/misc.C to do a
1313 fcntl (fd, F_SETFL, opt)
1314 ACE_NONBLOCK is used in libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv.C in the
1315 disable member function and options passed to the open function
1316 in libsrc/IPC_SAP/FIFO_SAP/FIFO.C
1324 libsrc/Misc/Profile_Timer.i
1327 if set, includes <sys/procfs.h>
1328 the PIOCUSAGE define is used in Profile_Timer.
1331 procfs.h defines things for the prpsinfo structure (basically to
1332 do a "ps" from inside a program).
1335 don't set: obviously a different mechanism.
1336 Look into /usr/include/sys/proc.h. The structure is proc. The
1337 pointer to the kernel's proc table may be obtained by
1338 extern struct proc *proc, *procNPROC;
1346 libsrc/Misc/Profile_Timer.h
1347 libsrc/Misc/Profile_Timer.C
1350 If defined, declares the Profile_Timer class that does start(),
1351 stop() and basically gets real_time, user_time, system_time for
1353 This stuff is highly non-portable.
1363 libsrc/Semaphores/Semaphore_Simple.h
1366 if not defined, defines semun as:
1368 int val; /* value for SETVAL */
1369 struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
1370 ushort *array; /* array for GETALL & SETALL */
1375 in /usr/include/sem.h:
1376 /* The fourth argument to semctl() varies depending on the value of
1377 its first argument. If desired, "union semun" can be declared
1378 by the user, but this is not necessary since the individual
1379 member can just be passed as the argument. */
1382 ACE_HAS_SIG_ATOMIC_T:
1383 ---------------------
1389 if not defined, does a:
1390 typedef int sig_atomic_t;
1391 This is used in the Reactor and service configurator.
1395 in /usr/include/sys/signal.h:
1396 typedef unsigned int sig_atomic_t;
1406 if not defined, does a
1407 typedef int ssize_t;
1408 used mostly in IPC_SAP. (don't confuse with size_t).
1412 in /usr/include/sys/types.h
1422 if not defined, declares the strbuf structure as:
1425 int maxlen; /* no. of bytes in buffer */
1426 int len; /* no. of bytes returned */
1427 void *buf; /* pointer to data */
1431 defined in /usr/include/sys/stropts.h
1433 uses strbuf as parameter to putmsg, putpmsg:
1434 int putmsg(int fildes, const struct strbuf *ctlptr,
1435 const struct strbuf *dataptr, int flags);
1447 libsrc/IPC_SAP/SOCK_SAP/LSOCK.C
1450 if defined, includes <stropts.h>
1457 ACE_HAS_STREAM_PIPES:
1458 ---------------------
1461 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.h
1462 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1463 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.h
1464 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.C
1465 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.h
1466 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.C
1467 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.h
1468 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.C
1469 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.i
1470 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.h
1471 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.C
1472 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.i
1475 if not set, won't be able to use the SPIPE class (IPC_SAP) with
1483 ACE_HAS_SVR4_DYNAMIC_LINKING:
1484 -----------------------------
1488 tests/Service_Configurator/CCM_App.C
1491 if defined, includes <dlfcn.h>
1492 with dlopen(), dlsym(), etc..
1497 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1498 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1501 ACE_HAS_SVR4_GETTIMEOFDAY:
1502 --------------------------
1506 libsrc/Reactor/Timer_Queue.i
1509 has to do with gettimeofday ().
1512 gettimeofday (struct timeval *tp)
1516 it has gettimeofday (struct timeval *tp, struct timezone *tzp);
1518 #if defined (ACE_HAS_SVR4_GETTIMEOFDAY)
1519 ::gettimeofday (&cur_time);
1521 ::gettimeofday (&cur_time, 0);
1522 #endif /* ACE_HAS_SVR4_GETTIMEOFDAY */
1531 #if defined (ACE_HAS_POLL)
1532 #include /**/ <poll.h>
1533 #endif /* ACE_HAS_POLL */
1535 ACE_USE_POLL_IMPLEMENTATION:
1542 Use the poll() event demultiplexor rather than select().
1548 ACE_HAS_SVR4_SIGNAL_T:
1549 ----------------------
1555 #if defined (ACE_HAS_SVR4_SIGNAL_T)
1556 typedef void (*SignalHandler)(int);
1557 typedef void (*SignalHandlerV)(void);
1558 #elif defined (ACE_HAS_SIGNALHANDLERV_INT_ARG)
1559 typedef void (*SignalHandler)(int);
1560 typedef void (*SignalHandlerV)(int);
1562 #define SignalHandler SIG_PF
1563 typedef void (*SignalHandlerV)(...);
1564 #endif /* ACE_HAS_SVR4_SIGNAL_T */
1574 libsrc/IPC_SAP/TLI_SAP/TLI.C
1575 libsrc/IPC_SAP/TLI_SAP/TLI.h
1576 libsrc/IPC_SAP/TLI_SAP/TLI_Stream.C
1579 TLI is the transport layer calls as in: t_bind(), t_open(), t_unbind(),
1580 t_optmgmt(), ... in SunOS and Solaris.
1587 ACE_HAS_SYS_FILIO_H:
1588 --------------------
1594 if not defined, includes <sys/filio.h>.
1595 didn't find any reference to anything in this file in the ACE code.
1598 filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
1599 for FIOLFS,.. solaris has this to say:
1601 * ioctl's for Online: DiskSuite.
1602 * WARNING - the support for these ioctls may be withdrawn
1603 * in the future OS releases.
1607 <sys/ioctl.h> defines FIOASYNC and some other ones,
1608 <sgtty.h> defines some like FIOCLEX.
1609 some are never defined.
1610 use #ifdef HP-UX to modify sysincludes.h
1613 ACE_HAS_TEMPLATE_TYPEDEFS:
1614 --------------------------
1620 cfront-based C++ compilers don't implement templates that support
1621 classes with typedefs of other types as formal arguments. This
1622 typedef uses the C++ preprocessor to work around this problem.
1628 libsrc/Service_Configurator/Svc_Conf.y.C
1629 libsrc/Service_Configurator/Thread_Spawn.i
1630 libsrc/Threads/Synch.C
1631 libsrc/Threads/Synch.i
1632 libsrc/Threads/Thr_Manager.i
1636 libsrc/ASX/Stream_Modules.C
1637 libsrc/ASX/Multiplexor.C
1638 libsrc/ASX/Message_List.C
1639 include/Message_List.h
1641 include/Multiplexor.h
1644 include/Stream_Modules.h
1645 include/Service_Types.h
1646 include/Thread_Spawn.h
1648 include/Thr_Manager.h
1651 We use Message_List.h even in a non-threaded environment.
1652 our XOMessageList.h does this by #ifdefs around Threaded things.
1665 if defined, include <sys/timod.h>
1668 timod is a STREAMS module for use with the Transport Inter-
1669 face (TI) functions of the Network Services library. The
1670 timod module converts a set of ioctl(2) calls into STREAMS
1671 messages that may be consumed by a transport protocol pro-
1672 vider that supports the Transport Interface. This allows a
1673 user to initiate certain TI functions as atomic operations.
1686 if set, includes <tiuser.h>
1689 in conjunction with t_bind, t_accept, etc.. transport layer.
1695 ACE_USE_POLL_IMPLEMENTATION:
1696 ----------------------------
1699 libsrc/Reactor/Reactor.i
1700 include/Event_Handler.h
1705 in the reactor, use poll instead of select. In general,
1706 good thing to have set.
1709 ----------------------------
1711 ace/Base_Thread_Adapter.h
1712 ace/Base_Thread_Adapter.inl
1713 ace/Base_Thread_Adapter.cpp
1716 When using gprof mainly on Linux, #define ACE_USES_GPROF
1717 will add calls to getitimer/setitimer in order to initialize profile
1718 timer and overcome the problem of gprof with multithreaded applications.
1720 ACE_QTREACTOR_CLEAR_PENDING_EVENTS:
1721 ----------------------------
1724 QtReactor by default does not clear qt events pending for
1725 activated socket. Clearing costs much, at least 2 hash accesses
1726 in ACE, and 2 another in Qt. It is also better to not clear
1727 pending events as some side effects are unknown. However,
1728 when events are not clear, then some user applications may be
1729 confused by handle_input/output/exception called without any
1730 data eg. in ACE_Acceptor::make_svc_handler. This swithc is
1731 intended to quickly fix user application which does not
1732 follow some reactor rules.
1734 It seems linux::qt does not queue pending events. Do not define
1737 Windows::qt queues pending events. If user application has handle_*
1738 methods which cannot be called without data, then turn on this switch
1739 to quickly fix the bug. However, one should seriously fix the