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++ Compliant compilers that automatically
145 provide storage 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_INT8_FORMAT_SPECIFIER String literal containing *printf
696 format specifier (including the '%')
697 to be used for ACE_INT8 values. If
698 not defined, ACE will attempt to
699 determine the correct setting.
700 ACE_INT16_FORMAT_SPECIFIER String literal containing *printf
701 format specifier (including the '%')
702 to be used for ACE_INT16 values. If
703 not defined, ACE will attempt to
704 determine the correct setting.
705 ACE_INT32_FORMAT_SPECIFIER String literal containing *printf
706 format specifier (including the '%')
707 to be used for ACE_INT32 values. If
708 not defined, ACE will attempt to
709 determine the correct setting.
710 ACE_INT64_FORMAT_SPECIFIER String literal containing *printf
711 format specifier (including the '%')
712 to be used for ACE_INT64 values. If
713 not defined, ACE will attempt to
714 determine the correct setting.
715 ACE_UINT8_FORMAT_SPECIFIER String literal containing *printf
716 format specifier (including the '%')
717 to be used for ACE_UINT8 values. If
718 not defined, ACE will attempt to
719 determine the correct setting.
720 ACE_UINT16_FORMAT_SPECIFIER String literal containing *printf
721 format specifier (including the '%')
722 to be used for ACE_UINT16 values. If
723 not defined, ACE will attempt to
724 determine the correct setting.
725 ACE_UINT32_FORMAT_SPECIFIER String literal containing *printf
726 format specifier (including the '%')
727 to be used for ACE_UINT32 values. If
728 not defined, ACE will attempt to
729 determine the correct setting.
730 ACE_UINT64_FORMAT_SPECIFIER String literal containing *printf
731 format specifier (including the '%')
732 to be used for ACE_UINT64 values. If
733 not defined, ACE will attempt to
734 determine the correct setting.
736 ACE_HAS_VOIDPTR_GETTIMEOFDAY Platform/compiler supports
737 void * as second parameter
739 ACE_HAS_VOIDPTR_MMAP Platform requires void * for
741 ACE_HAS_VOIDPTR_SOCKOPT OS/compiler uses void * arg 4
742 setsockopt() rather than const
744 ACE_HAS_WCSNLEN Platform supports wcsnlen(3).
745 ACE_HAS_WIN32_OVERLAPPED_IO Platform has Windows overlapped I/O;
746 requires I/O completion ports.
747 ACE_HAS_WIN32_TRYLOCK The Win32 platform support
748 TryEnterCriticalSection()
749 (WinNT 4.0 and beyond)
750 ACE_HAS_WINSOCK2 The Win32 platform supports
752 ACE_HAS_XLI Platform has the XLI version
754 ACE_HAS_XTI Platform has XTI
755 (X/Open-standardized superset
756 of TLI). Implies ACE_HAS_TLI
757 but uses a different header
759 ACE_INITIALIZE_MEMORY_BEFORE_USE Memory is explicitly initialized before
760 use. Useful when using a profiler like
762 ACE_HRTIME_T_IS_BASIC_TYPE ACE_hrtime_t is a basic type that
763 doesn't require ACE_U64_TO_U32
765 ACE_LACKS_ACCESS Platform lacks access() (e.g.,
767 ACE_LACKS_ACE_IOSTREAM Platform can not build
768 ace/IOStream{,_T}.cpp. This
769 does not necessarily mean that
770 the platform does not support
772 ACE_LACKS_AUTO_MMAP_REPLACEMENT No system support for replacing any
774 ACE_LACKS_BSEARCH Compiler/platform lacks the
775 standard C library bsearch()
777 ACE_LACKS_CLOSEDIR Platform lacks closedir and the closedir
778 emulation must be used
779 ACE_LACKS_OPENDIR Platform lacks opendir and the opendir
780 emulation must be used
781 ACE_LACKS_READDIR Platform lacks readdir and the readdir
782 emulation must be used
783 ACE_LACKS_COND_TIMEDWAIT_RESET pthread_cond_timedwait does
784 *not* reset the time argument
785 when the lock is acquired.
786 ACE_LACKS_CONST_STRBUF_PTR Platform uses struct strbuf *
787 rather than const struct
788 strbuf * (e.g., HP/UX 10.x)
789 ACE_LACKS_CONST_TIMESPEC_PTR Platform forgot const in
790 cond_timewait (e.g., HP/UX).
791 ACE_LACKS_COND_T Platform lacks condition
792 variables (e.g., Win32 and
794 ACE_LACKS_CONDATTR_PSHARED Platform has no implementation
796 pthread_condattr_setpshared(),
797 even though it supports
799 ACE_LACKS_DIFFTIME Platform lacks difftime() implementation
800 ACE_LACKS_DUP2 Platform lacks dup2().
801 ACE_LACKS_FCNTL Platform lacks POSIX-style fcntl ().
802 ACE_LACKS_FSYNC Platform lacks fsync().
803 ACE_LACKS_INLINE_FUNCTIONS Platform can't handle "inline"
805 ACE_LACKS_EXEC Platform lacks the exec()
806 family of system calls (e.g.,
807 Win32, VxWorks, Chorus)
808 ACE_LACKS_FILELOCKS Platform lacks file locking
810 ACE_LACKS_FLOATING_POINT Platform does not support
811 floating point operations
812 (e.g., certain Chorus hardware
814 ACE_LACKS_FORK Platform lacks the fork()
815 system call (e.g., Win32,
817 ACE_LACKS_GETOPT_PROTOTYPE Platform lacks the getopt()
818 prototype (e.g., LynxOS)
819 ACE_LACKS_GETPGID Platform lacks getpgid() call
820 (e.g., Win32, Chorus, and
822 ACE_LACKS_GETSERVBYNAME Platforms lacks
823 getservbyname() (e.g., VxWorks
825 ACE_LACKS_GETIPNODEBYADDR Platform lacks getipnodebyaddr().
826 ACE_LACKS_GETIPNODEBYNAME Platform lacks getipnodebyname().
827 ACE_LACKS_INET_ATON Platform lacks the inet_aton()
829 ACE_LACKS_INET_ATON_PROTOTYPE Platform/compiler lacks the
830 inet_aton() prototype (e.g.,
832 ACE_LACKS_IOSTREAM_FX iostream header does not
833 declare ipfx (), opfx (),
835 ACE_LACKS_KEY_T Platform lacks key_t (e.g.,
836 Chorus, VxWorks, Win32)
837 ACE_LACKS_LINEBUFFERED_STREAMBUF Platform lacks streambuf
839 ACE_LACKS_LONGLONG_T Compiler/platform does not
840 support the signed or unsigned long
842 ACE_LACKS_LSTAT Platform lacks the lstat() function.
843 ACE_LACKS_MADVISE Platform lacks madvise()
845 ACE_LACKS_MALLOC_H Platform lacks malloc.h
846 ACE_LACKS_MEMORY_H Platform lacks memory.h (e.g.,
848 ACE_LACKS_MKFIFO Platform lacks mkfifo() e.g.,
849 VxWorks, Chorus, pSoS, and WinNT.
850 ACE_LACKS_MKTEMP Platform lacks the mktemp() function.
851 ACE_LACKS_MKTEMP_PROTOTYPE Platform/compiler lacks the
852 mktemp() prototype (e.g.,
854 ACE_LACKS_MKSTEMP Platform lacks the mkstemp() function.
855 ACE_LACKS_MKSTEMP_PROTOTYPE Platform/compiler lacks the
856 mkstemp() prototype (e.g.,
858 ACE_LACKS_MMAP The platform doesn't have
859 mmap(2) (e.g., SCO UNIX).
860 ACE_LACKS_MODE_MASKS Platform/compiler doesn't have
862 ACE_LACKS_MPROTECT The platform doesn't have
863 mprotect(2) (e.g., EPLX real
864 time OS from CDC (based on
866 ACE_LACKS_MSG_ACCRIGHTS Platform defines ACE_HAS_MSG,
867 but lacks msg_accrights{,len}.
868 ACE_LACKS_MSG_WFMO Platform lacks
869 MsgWaitForMultipleObjects
870 (only needs to be defined when
871 ACE_WIN32 is also defined).
872 ACE_LACKS_MSYNC Platform lacks msync() (e.g.,
874 ACE_LACKS_MUTEXATTR_PSHARED Platform lacks
875 pthread_mutexattr_setpshared().
876 ACE_LACKS_NAMED_POSIX_SEM Platform lacks named POSIX
877 semaphores (e.g., Chorus)
878 ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support
879 reentrant netdb functions
885 ACE_LACKS_NEW_H OS doesn't have, or we don't want to
887 ACE_LACKS_NULL_PTHREAD_STATUS OS requires non-null status pointer
888 for ::pthread_join ().
889 ACE_LACKS_NUMERIC_LIMITS Platform lacks std::numeric_limits<>.
890 ACE_LACKS_PERFECT_MULTICAST_FILTERING Platform lacks IGMPv3 "perfect" filtering
891 of multicast dgrams at the socket level.
892 If == 1, ACE_SOCK_Dgram_Mcast will bind
893 the first joined multicast group to the
894 socket, and all future joins on that
895 socket will fail with an error.
896 ACE_LACKS_PRAGMA_ONCE Compiler complains about #pragma once
897 ACE_LACKS_PRI_T Platform lacks pri_t (e.g.,
898 Tandem NonStop UNIX).
899 ACE_LACKS_PTHREAD_CANCEL Platform lacks
901 ACE_LACKS_PTHREAD_SCOPE_PROCESS Platform lacks support for
902 PTHREAD_SCOPE_PROCESS
903 ACE_LACKS_PTHREAD_SIGMASK Platform lacks pthread_sigmask ().
904 ACE_LACKS_PTHREAD_THR_SIGSETMASK Platform lacks
905 pthread_thr_sigsetmask (e.g.,
906 MVS, HP/UX, and OSF/1 3.2)
907 ACE_LACKS_PUTENV_PROTOTYPE Platform/compiler lacks the
908 putenv() prototype (e.g.,
910 ACE_LACKS_PWD_REENTRANT_FUNCTIONS Platform lacks getpwnam_r()
911 methods (e.g., SGI 6.2).
912 ACE_LACKS_QSORT Compiler/platform lacks the
913 standard C library qsort()
915 ACE_LACKS_READLINK Platform lacks the readlink() function.
916 ACE_LACKS_READV Platform doesn't define readv,
918 ACE_LACKS_RENAME Platform lacks rename().
919 ACE_LACKS_RLIMIT Platform/compiler lacks
920 {get,set}rlimit() function
921 (e.g., VxWorks, Chorus, and
923 ACE_LACKS_RLIMIT_PROTOTYPE Platform/compiler lacks
924 {get,set}rlimit() prototypes
926 ACE_LACKS_READDIR_R Platform uses ACE_HAS_DIRENT
927 but does not have readdir_r
929 ACE_LACKS_REALPATH Platform/compiler lacks
930 realpath () function (e.g.,
932 ACE_LACKS_RECVMSG Platform lacks recvmsg()
934 ACE_LACKS_RWLOCK_T Platform lacks readers/writer
936 ACE_LACKS_RWLOCKATTR_PSHARED Platform lacks
937 pthread_rwlockattr_setpshared().
938 ACE_LACKS_SBRK Platform lacks a working
939 sbrk() (e.g., Win32 and
941 ACE_LACKS_SCANDIR_PROTOTYPE Platform/compiler lacks
944 ACE_LACKS_SEEKDIR Platform uses ACE_HAS_DIRENT
945 but does not have seekdir ().
946 ACE_LACKS_SEMBUF_T Platform lacks struct sembuf
947 (e.g., Win32 and VxWorks)
948 ACE_LACKS_SETDETACH Platform lacks
949 pthread_attr_setdetachstate()
951 ACE_LACKS_SETSCHED Platform lacks
952 pthread_attr_setsched()
954 ACE_LACKS_SIGACTION Platform lacks struct
955 sigaction (e.g., Win32 and
957 ACE_LACKS_SIGNED_CHAR Platform lacks "signed char"
959 ACE_LACKS_SIGSET Platform lacks signal sets
960 (e.g., Chorus and Win32)
961 ACE_LACKS_STRPTIME Platform/compiler lacks the strptime()
963 ACE_LACKS_WCSCHR Platform/compiler lacks wcschr()
964 ACE_LACKS_STRDUP Platform/compiler lacks strdup()
965 ACE_LACKS_WCSDUP Platform/compiler lacks wcsdup()
966 ACE_LACKS_WCSRCHR Platform/compiler lacks wcsrchr()
967 ACE_LACKS_SWAB Platform/compiler lacks
969 ACE_LACKS_SYS_MSG_H Platform lacks sys/msg.h
970 (e.g., Chorus and VxWorks)
971 ACE_LACKS_SYS_PARAM_H Platform lacks <sys/param.h>
973 ACE_LACKS_SENDMSG Platform lacks sendmsg()
975 ACE_LACKS_SI_ADDR Platform lacks the si_addr
976 field of siginfo_t (e.g.,
977 VxWorks and HP/UX 10.x)
978 ACE_LACKS_SYMLINKS Platform lacks symbolic links
979 ACE_LACKS_SYSV_SHMEM Platform lacks System V shared
980 memory (e.g., Win32 and
982 ACE_LACKS_SIGINFO_H Platform lacks the siginfo.h
983 include file (e.g., MVS)
984 ACE_LACKS_SOCKET_BUFSIZ Platform doesn't support
986 ACE_LACKS_SOCKETPAIR Platform lacks the
987 socketpair() call (e.g., SCO
989 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES Compiler doesn't support
990 static data member templates
991 ACE_LACKS_STRCASECMP Compiler/platform lacks
992 strcasecmp() (e.g., DG/UX,
994 ACE_LACKS_STRCASECMP_PROTOTYPE Platform/compiler lacks the
995 strcasecmp() prototype (e.g.,
997 ACE_LACKS_STRNCASECMP_PROTOTYPE Platform/compiler lacks the
998 strncasecmp() prototype (e.g.,
1000 ACE_LACKS_STRRECVFD Platform doesn't define struct
1002 ACE_LACKS_SYSCALL Platform doesn't have
1004 ACE_LACKS_T_ERRNO Header files lack t_errno for
1006 ACE_LACKS_TCP_NODELAY OS does not support TCP_NODELAY.
1007 ACE_LACKS_TELLDIR Platform uses ACE_HAS_DIRENT
1008 but does not have telldir ().
1009 ACE_LACKS_THREAD_STACK_SIZE Platform lacks
1010 pthread_attr_setstacksize()
1011 (e.g., Linux pthreads)
1012 ACE_LACKS_THR_CONCURRENCY_FUNCS (ONLY APPLIES TO SOLARIS)
1013 Platform does not support
1014 thr_getconcurrency/thr_setconcurrency
1015 functions, or their implementation
1016 is effectively a "no-op". This
1017 notably applies for Solaris >= 5.9.
1018 Note that if you build on Solaris 8
1019 and run on Solaris 9+, you can
1020 encounter thread creation errors
1021 unless you rebuild on the target
1023 ACE_LACKS_TIMEDWAIT_PROTOTYPES MIT pthreads platform lacks
1024 the timedwait prototypes
1025 ACE_LACKS_TIMESPEC_T Platform does not define
1026 timepec_t as a typedef for
1028 ACE_LACKS_TRUNCATE Platform doesn't have truncate()
1030 ACE_LACKS_UALARM_PROTOTYPE Platform/compiler lacks the
1031 ualarm() prototype (e.g.,
1033 ACE_LACKS_CHAR_RIGHT_SHIFTS Compiler does not have any istream
1034 operator>> for chars, u_chars, or
1036 ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS Compiler does not have
1037 operator>> (istream &, u_char *) or
1038 operator>> (istream &, signed char *)
1039 ACE_LACKS_UCONTEXT_H Platform lacks the ucontext.h
1041 ACE_LACKS_UMASK Platform lacks umask function
1042 ACE_LACKS_UNBUFFERED_STREAMBUF Platform lacks streambuf
1044 ACE_LACKS_UNISTD_H Platform lacks the unistd.h
1045 file (e.g., VxWorks and Win32)
1046 ACE_LACKS_UNIX_DOMAIN_SOCKETS ACE platform has no UNIX
1048 ACE_LACKS_UNIX_SIGNALS Platform lacks full signal
1049 support (e.g., Win32 and
1051 ACE_LACKS_UNSIGNEDLONGLONG_T Compiler/platform does not
1052 support the unsigned long
1054 ACE_LACKS_UTSNAME_T Platform lacks struct utsname
1055 (e.g., Win32 and VxWorks)
1056 ACE_LACKS_UNAME Platform lacks uname calls
1057 ACE_LACKS_WAIT The platform lacks wait
1058 ACE_LACKS_WIN32_GETPROCESSTIMES The Windows platform doesn't have
1060 ACE_LACKS_WIN32_MOVEFILEEX The Windows platform doesn't have
1062 ACE_LACKS_WIN32_SECURITY_DESCRIPTORS The Windows platform doesn't have
1063 security descriptor support.
1064 ACE_LACKS_WRITEV Platform doesn't define
1065 writev, so use our own
1067 ACE_NEEDS_DEV_IO_CONVERSION Necessary with some compilers
1068 to pass ACE_TTY_IO as
1069 parameter to DEV_Connector.
1070 ACE_NEEDS_FUNC_DEFINITIONS Compiler requires a definition
1071 for a "hidden" function, e.g.,
1072 a private, unimplemented copy
1073 constructor or assignment
1074 operator. The SGI C++
1075 compiler needs this, in
1076 template classes, with
1077 ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA.
1078 ACE_NEEDS_HUGE_THREAD_STACKSIZE Required by platforms with
1079 small default stacks.
1080 ACE_NEEDS_LWP_PRIO_SET OS has LWPs, and when the
1081 priority of a bound thread is
1082 set, then the LWP priority
1084 ACE_NEEDS_SCHED_H Platform needs to #include
1086 to get thread scheduling
1089 ACE_NO_WIN32_LEAN_AND_MEAN If this is set, then ACE does not
1090 define WIN32_LEAN_AND_MEAN before
1091 including <windows.h>. Needed for
1092 code that uses non-lean Win32
1093 facilities such as COM.
1095 ACE_SHM_OPEN_REQUIRES_ONE_SLASH The path specified on shm_open() must
1096 have a leading, single slash and not
1097 have any other slashes.
1099 ACE_WSTRING_HAS_USHORT_SUPPORT If a platform has wchar_t as a
1101 ACE_WString doesn't have a
1102 constructor that understands
1103 an ACE_USHORT16 string. So
1105 one. (mostly used my ACE Name
1108 ACE_HAS_BROKEN_PREALLOCATED_OBJECTS_AFTER_FORK
1109 Under QNX/RTP the objects preallocated
1110 in ACE_OS_Object_Manager cannot be
1111 destroyed after a fork() call.
1112 Since these objects are only destroyed
1113 at application shutdown we take the
1114 simpler approach of not destroying
1116 Both QNX/RTP and LynxOS suffer from
1119 ACE_DONT_INIT_WINSOCK This definition defines whether or not
1120 to explicitly initialize Winsock during
1121 ACE::init() (i.e., whether WSAStartup()
1122 is called). Some Win32 platforms have
1123 dependent characteristics between
1124 ACE initialization and
1125 network initialization.
1127 ----------------------------------------
1129 The following macros determine the svc.conf file format ACE uses.
1133 ACE_HAS_CLASSIC_SVC_CONF This macro forces ACE to use
1134 the classic svc.conf format.
1136 ACE_HAS_XML_SVC_CONF This macro forces ACE to use the XML
1139 ACE_USES_CLASSIC_SVC_CONF This macro should be defined
1140 as 0 or 1, depending on the
1141 preferred svc.conf file
1142 format. Defining this macro
1143 to 0 means ACE will use XML
1144 svc.conf file format.
1145 Defining it to 1 will force
1146 ACE to use the classic
1148 ** This macro takes precedence
1149 ** over previous two macros.
1151 ----------------------------------------
1152 The following is a partial list of where some of these macros are used
1153 in the code. This list was originally compiled by Jam Hamidi
1154 (jh1@core01.osi.com). It is now hopelessly out of date. Hopefully,
1155 someone will come along and update it....
1161 libsrc/IPC_SAP/SOCK_SAP/SOCK_Connect.C
1162 for allocation of iovp
1164 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1165 for alocation of iovp
1168 alloca() allocates size bytes of space in the stack frame of
1169 the caller, and returns a pointer to the allocated block.
1170 This temporary space is automatically freed when the caller
1171 returns. Note: if the allocated block is beyond the current
1172 stack limit, the resulting behavior is undefined.
1178 in HPUX it has to do new and delete. Affects performance.
1181 ACE_HAS_AUTOMATIC_INIT_FINI:
1182 ----------------------------
1185 libsrc/Service_Configurator/Service_Repository.i
1186 libsrc/Service_Configurator/Parse_Node.i
1187 include/Parse_Node.i
1188 include/Service_Repository.i
1191 _init() initializes a loadable module. It is called before
1192 any other routine in a loadable module.
1193 _info() returns information about a loadable module.
1194 _fini() should return the return value from mod_remove(9F).
1195 This flag if set, doesn't do anything. If not set, forces
1196 _init() and _fini() to be executed as is:
1197 dlsym ((char *) handle, "_fini").
1201 Maybe have to look into shl_load( ), shl_definesym( ),
1202 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1203 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1204 Means Service Configurator won't be available.
1208 ACE_HAS_CPLUSPLUS_HEADERS:
1209 --------------------------
1218 If this is not defined, libc.h and osfcn.h get included.
1219 Only needed for older compiler/OS platforms that don't
1220 provide standard C++ header files in /usr/include.
1222 ACE_HAS_HI_RES_TIMER:
1223 ---------------------
1226 libsrc/Misc/High_Res_Timer.h
1227 libsrc/Misc/High_Res_Timer.C
1228 include/High_Res_Timer.h
1231 C++ wrapper around gethrtime(), which returns a long long.
1232 gethrtime() returns the current high-resolution real time.
1233 Time is expressed as nanoseconds since some arbitrary time
1234 in the past; it is not correlated in any way to the time of
1235 day, and thus is not subject to resetting, drifting, etc.
1238 look into: getclock(), reltimer(), getitimer()
1239 maybe even vtimes structure vm_utime, vm_stime ?
1259 ACE_HAS_POSIX_NONBLOCK:
1260 -----------------------
1269 if defined, sets ACE_NONBLOCK and O_NONBLOCK
1270 O_NONBLOCK is used in libsrc/Misc/misc.C to do a
1271 fcntl (fd, F_SETFL, opt)
1272 ACE_NONBLOCK is used in libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv.C in the
1273 disable member function and options passed to the open function
1274 in libsrc/IPC_SAP/FIFO_SAP/FIFO.C
1282 libsrc/Misc/Profile_Timer.i
1285 if set, includes <sys/procfs.h>
1286 the PIOCUSAGE define is used in Profile_Timer.
1289 procfs.h defines things for the prpsinfo structure (basically to
1290 do a "ps" from inside a program).
1293 don't set: obviously a different mechanism.
1294 Look into /usr/include/sys/proc.h. The structure is proc. The
1295 pointer to the kernel's proc table may be obtained by
1296 extern struct proc *proc, *procNPROC;
1304 libsrc/Misc/Profile_Timer.h
1305 libsrc/Misc/Profile_Timer.C
1308 If defined, declares the Profile_Timer class that does start(),
1309 stop() and basically gets real_time, user_time, system_time for
1311 This stuff is highly non-portable.
1321 libsrc/Semaphores/Semaphore_Simple.h
1324 if not defined, defines semun as:
1326 int val; /* value for SETVAL */
1327 struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
1328 ushort *array; /* array for GETALL & SETALL */
1333 in /usr/include/sem.h:
1334 /* The fourth argument to semctl() varies depending on the value of
1335 its first argument. If desired, "union semun" can be declared
1336 by the user, but this is not necessary since the individual
1337 member can just be passed as the argument. */
1340 ACE_HAS_SIG_ATOMIC_T:
1341 ---------------------
1347 if not defined, does a:
1348 typedef int sig_atomic_t;
1349 This is used in the Reactor and service configurator.
1353 in /usr/include/sys/signal.h:
1354 typedef unsigned int sig_atomic_t;
1364 if not defined, does a
1365 typedef int ssize_t;
1366 used mostly in IPC_SAP. (don't confuse with size_t).
1370 in /usr/include/sys/types.h
1380 if not defined, declares the strbuf structure as:
1383 int maxlen; /* no. of bytes in buffer */
1384 int len; /* no. of bytes returned */
1385 void *buf; /* pointer to data */
1389 defined in /usr/include/sys/stropts.h
1391 uses strbuf as parameter to putmsg, putpmsg:
1392 int putmsg(int fildes, const struct strbuf *ctlptr,
1393 const struct strbuf *dataptr, int flags);
1405 libsrc/IPC_SAP/SOCK_SAP/LSOCK.C
1408 if defined, includes <stropts.h>
1415 ACE_HAS_STREAM_PIPES:
1416 ---------------------
1419 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.h
1420 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1421 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.h
1422 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.C
1423 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.h
1424 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.C
1425 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.h
1426 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.C
1427 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.i
1428 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.h
1429 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.C
1430 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.i
1433 if not set, won't be able to use the SPIPE class (IPC_SAP) with
1441 ACE_HAS_SVR4_DYNAMIC_LINKING:
1442 -----------------------------
1446 tests/Service_Configurator/CCM_App.C
1449 if defined, includes <dlfcn.h>
1450 with dlopen(), dlsym(), etc..
1455 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1456 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1459 ACE_HAS_SVR4_GETTIMEOFDAY:
1460 --------------------------
1464 libsrc/Reactor/Timer_Queue.i
1467 has to do with gettimeofday ().
1470 gettimeofday (struct timeval *tp)
1474 it has gettimeofday (struct timeval *tp, struct timezone *tzp);
1476 #if defined (ACE_HAS_SVR4_GETTIMEOFDAY)
1477 ::gettimeofday (&cur_time);
1479 ::gettimeofday (&cur_time, 0);
1480 #endif /* ACE_HAS_SVR4_GETTIMEOFDAY */
1489 #if defined (ACE_HAS_POLL)
1490 #include /**/ <poll.h>
1491 #endif /* ACE_HAS_POLL */
1493 ACE_USE_POLL_IMPLEMENTATION:
1500 Use the poll() event demultiplexor rather than select().
1506 ACE_HAS_SVR4_SIGNAL_T:
1507 ----------------------
1513 #if defined (ACE_HAS_SVR4_SIGNAL_T)
1514 typedef void (*SignalHandler)(int);
1515 typedef void (*SignalHandlerV)(void);
1516 #elif defined (ACE_HAS_SIGNALHANDLERV_INT_ARG)
1517 typedef void (*SignalHandler)(int);
1518 typedef void (*SignalHandlerV)(int);
1520 #define SignalHandler SIG_PF
1521 typedef void (*SignalHandlerV)(...);
1522 #endif /* ACE_HAS_SVR4_SIGNAL_T */
1532 libsrc/IPC_SAP/TLI_SAP/TLI.C
1533 libsrc/IPC_SAP/TLI_SAP/TLI.h
1534 libsrc/IPC_SAP/TLI_SAP/TLI_Stream.C
1537 TLI is the transport layer calls as in: t_bind(), t_open(), t_unbind(),
1538 t_optmgmt(), ... in SunOS and Solaris.
1545 ACE_HAS_SYS_FILIO_H:
1546 --------------------
1552 if not defined, includes <sys/filio.h>.
1553 didn't find any reference to anything in this file in the ACE code.
1556 filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
1557 for FIOLFS,.. solaris has this to say:
1559 * ioctl's for Online: DiskSuite.
1560 * WARNING - the support for these ioctls may be withdrawn
1561 * in the future OS releases.
1565 <sys/ioctl.h> defines FIOASYNC and some other ones,
1566 <sgtty.h> defines some like FIOCLEX.
1567 some are never defined.
1568 use #ifdef HP-UX to modify sysincludes.h
1571 ACE_HAS_TEMPLATE_TYPEDEFS:
1572 --------------------------
1578 cfront-based C++ compilers don't implement templates that support
1579 classes with typedefs of other types as formal arguments. This
1580 typedef uses the C++ preprocessor to work around this problem.
1586 libsrc/Service_Configurator/Svc_Conf.y.C
1587 libsrc/Service_Configurator/Thread_Spawn.i
1588 libsrc/Threads/Synch.C
1589 libsrc/Threads/Synch.i
1590 libsrc/Threads/Thr_Manager.i
1594 libsrc/ASX/Stream_Modules.C
1595 libsrc/ASX/Multiplexor.C
1596 libsrc/ASX/Message_List.C
1597 include/Message_List.h
1599 include/Multiplexor.h
1602 include/Stream_Modules.h
1603 include/Service_Types.h
1604 include/Thread_Spawn.h
1606 include/Thr_Manager.h
1609 We use Message_List.h even in a non-threaded environment.
1610 our XOMessageList.h does this by #ifdefs around Threaded things.
1623 if defined, include <sys/timod.h>
1626 timod is a STREAMS module for use with the Transport Inter-
1627 face (TI) functions of the Network Services library. The
1628 timod module converts a set of ioctl(2) calls into STREAMS
1629 messages that may be consumed by a transport protocol pro-
1630 vider that supports the Transport Interface. This allows a
1631 user to initiate certain TI functions as atomic operations.
1644 if set, includes <tiuser.h>
1647 in conjunction with t_bind, t_accept, etc.. transport layer.
1653 ACE_USE_POLL_IMPLEMENTATION:
1654 ----------------------------
1657 libsrc/Reactor/Reactor.i
1658 include/Event_Handler.h
1663 in the reactor, use poll instead of select. In general,
1664 good thing to have set.
1667 ----------------------------
1669 ace/Base_Thread_Adapter.h
1670 ace/Base_Thread_Adapter.inl
1671 ace/Base_Thread_Adapter.cpp
1674 When using gprof mainly on Linux, #define ACE_USES_GPROF
1675 will add calls to getitimer/setitimer in order to initialize profile
1676 timer and overcome the problem of gprof with multithreaded applications.
1678 ACE_QTREACTOR_CLEAR_PENDING_EVENTS:
1679 ----------------------------
1682 QtReactor by default does not clear qt events pending for
1683 activated socket. Clearing costs much, at least 2 hash accesses
1684 in ACE, and 2 another in Qt. It is also better to not clear
1685 pending events as some side effects are unknown. However,
1686 when events are not clear, then some user applications may be
1687 confused by handle_input/output/exception called without any
1688 data eg. in ACE_Acceptor::make_svc_handler. This swithc is
1689 intended to quickly fix user application which does not
1690 follow some reactor rules.
1692 It seems linux::qt does not queue pending events. Do not define
1695 Windows::qt queues pending events. If user application has handle_*
1696 methods which cannot be called without data, then turn on this switch
1697 to quickly fix the bug. However, one should seriously fix the