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_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES
24 Win32 only. Users want to use
27 ACE_OS::default_win32_security_attributes
28 as the default security
30 ACE_DISABLE_MKTEMP Disable availability of
32 ACE_DISABLE_TEMPNAM Disable availability of
34 ACE_DISABLE_DEBUG_DLL_CHECK Define this if you don't want
35 debug version ACE search for
36 debug version DLLs first
37 before looking for the DLL
39 ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
40 Application will allocate its
41 own object manager. This
43 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
46 ACE_GETNAME_RETURNS_RANDOM_SIN_ZERO Platform does not initialize
47 sockaddr_in::sin_zero field in
48 calls to getpeername() and
49 getsockname(). As a result,
50 memcmp()-based equality
51 comparison can fail despite
52 the fact two sockaddr_in
53 instances refer to the same
55 ACE_MAIN Renames "main (int, char *[])",
56 for platforms such as g++/VxWorks
57 that don't allow "main". Requires
59 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
60 ACE_MKDIR_LACKS_MODE This platform has a mkdir function with
62 ACE_MT_SAFE Compile using multi-thread libraries
63 ACE_NDEBUG Turns off debugging features
64 ACE_NLOGGING Turns off the LM_DEBUG and
65 LM_ERROR logging macros...
66 ACE_NTRACE Turns off the tracing feature when = 1.
67 ACE_HAS_TRACE Defined when ACE_NTRACE=0 to
68 help support tracing. Can
69 also be defined by users who
70 implement their own tracing
72 ACE_TRACE_IMPL. Not defining
73 it helps reduce footprint by
74 not requiring applications to
76 ACE_PAGE_SIZE Defines the page size of the
77 system (not used on Win32 or
78 with ACE_HAS_GETPAGESIZE).
79 ACE_TIMEPROBE_ASSERTS_FIXED_SIZE If enabled then ACE_Timeprobe_Ex<>::timeprobe()
80 will assert if the end of the
81 buffer is reached. If disabled, the
82 counter wraps around to start
83 at the beginning of the buffer.
84 ACE_TIMER_SKEW If a timed ::select () can return
85 early, then ACE_TIMER_SKEW is the
86 maximum adjustment, in microseconds,
87 that ACE_Timer_Queue uses to
88 compensate for the early return.
89 ACE_TLI_TCP_DEVICE Device the platform uses for TCP on
90 TLI. Only needed if not /dev/tcp.
91 ACE_USE_POLL The OS platform supports the
92 poll() event demultiplexor
93 ACE_USES_ASM_SYMBOL_IN_DLSYM Platform uses assembly symbols
94 instead of C symbols in
96 ACE_USES_STATIC_MFC When linking MFC as a static library is desired
97 ACE_USES_EXPLICIT_STD_NAMESPACE Set this when ::fclose doesn't
99 explicitly specify the std
100 namespace. This is needed
101 with the Borland 6 and earlier
103 ACE_USES_GPROF ACE calls getitimer before spawning
104 a new thread and setitimer
105 after spawning the thread in
106 order to overcome the problems
107 of gprof with multithreaded
108 applications. It uses the idea from
109 http://sam.zoy.org/writings/programming/gprof.html
110 ACE_USES_FIFO_SEM Directs ACE to use FIFO based semaphores on
111 platforms that support this (not having full
112 POSIX semaphore support, supporting mkfifo, select
114 ACE_WSOCK_VERSION A parameter list indicating
115 the version of WinSock (e.g.,
116 "1, 1" is version 1.1).
117 ACE_HAS_AIO_CALLS Platform supports POSIX aio* calls.
118 Corresponds to _POSIX_ASYNCHRONOUS_IO
119 constant in <unistd.h>.
120 ACE_HAS_ALT_CUSERID Use ACE's alternate cuserid()
121 implementation since a system
122 cuserid() may not exist, or it
123 is not desirable to use it.
124 The implementation requires
125 ACE_LACKS_PWD_FUNCTIONS to be
126 undefined and that the
127 geteuid() system call exists.
128 ACE_DEFAULT_THREAD_KEYS Number of TSS keys, with
129 ACE_HAS_TSS_EMULATION _only_.
131 ACE_DEFAULT_THREAD_STACKSIZE Default stack size specified for the
132 ACE thread spawning methods. Defaults
133 to 0, which defers to OS defaults.
134 ACE_DEFAULT_LD_SEARCH_PATH Specify the platform default search
135 paths. This macro should only be
136 defined on platforms that don't
137 support environment variables at all
138 ACE_THREADS_DONT_INHERIT_LOG_MSG Specify this if you don't want
139 threads to inherit parent
142 ACE_THREAD_MANAGER_USES_SAFE_SPAWN Disable the "check before lock" feature
143 in ACE_Thread_Manager. Defining this
144 macro avoids a potential race condition
145 on platforms with aggressive read/write
147 ACE_HAS_CPU_SET_T Platform delivers cpu_set_t.
148 ACE_HAS_RECURSIVE_MUTEXES Mutexes are inherently recursive
150 ACE_HAS_NONRECURSIVE_MUTEXES In addition to recursive mutexes,
151 platform has non-recursive ones also.
152 ACE_HAS_RECV_TIMEDWAIT Platform has the MIT pthreads
154 ACE_HAS_RLIMIT_RESOURCE_ENUM Platform has enum instead of
155 int for first argument to
156 ::{get,set}rlimit (). The
157 value of this macro is the
158 enum definition, e.g., enum
159 __rlimit_resource, for Linux
161 ACE_HAS_RUSAGE_WHO_ENUM Platform has enum instead of
162 int for first argument to
163 ::getrusage (). The value of
164 this macro is the enum
165 definition, e.g., enum
166 __rusage_who, for Linux glibc
168 ACE_HAS_SCANDIR Platform has a native scandir()
169 function. Without any other scandir-
170 related settings, it's assumed that
171 the selector and comparator functions
172 accept const ACE_DIRENT pointers.
173 ACE_SCANDIR_CMP_USES_VOIDPTR The OS's scandir() comparator function
174 is int (*compare)(void*, void*).
175 ACE_SCANDIR_CMP_USES_CONST_VOIDPTR The OS's scandir() comparator function
176 is int (*compare)(const void*,
178 ACE_HAS_WIN32_STRUCTURED_EXCEPTIONS Platform/compiler supports
179 Win32 structural exceptions
180 ACE_HAS_4_4BSD_SENDMSG_RECVMSG Platform has BSD 4.4
181 sendmsg()/recvmsg() APIs.
182 ACE_HAS_P_READ_WRITE Platform has pread() and
184 ACE_HAS_ALLOCA Compiler/platform supports
186 ACE_HAS_ALLOCA_H Compiler/platform has
188 ACE_HAS_AUTOMATIC_INIT_FINI Compiler/platform correctly
189 calls init()/fini() for shared
191 ACE_HAS_BIG_FD_SET Compiler/platform has typedef
192 u_long fdmask (e.g., Linux).
193 ACE_HAS_BROKEN_ACCEPT_ADDR Platform can't correctly deal
194 with a NULL addr to accept()
195 (e.g, VxWorks < 6.9).
196 ACE_HAS_BYTESEX_H Platform has <bytesex.h>.
197 ACE_HAS_CANCEL_IO Platform supports the Win32
198 CancelIO() function (WinNT 4.0
200 ACE_HAS_CHARPTR_DL OS/platform uses char * for
201 dlopen/dlsym args, rather than
203 ACE_HAS_CHARPTR_SOCKOPT OS/platform uses char * for
204 sockopt, rather than const
206 ACE_HAS_CLOCK_GETTIME Platform supports POSIX.1b
207 clock_gettime () at least for clock-id CLOCK_REALTIME
208 ACE_HAS_CLOCK_GETTIME_MONOTONIC Platform supports POSIX.1b
209 clock_gettime () with the clock-id CLOCK_MONOTONIC
210 ACE_HAS_CLOCK_SETTIME Platform supports POSIX.1b
212 ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES Prototypes for both signal()
213 and struct sigaction are
215 ACE_HAS_DIRENT Compiler/platform has Dirent
217 ACE_HAS_DLL Build ACE using the frigging
219 ACE_HAS_EBCDIC Compile in the ACE code set classes
221 ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT When a base-class is a
222 specialization of a class template
223 then this class template must be
225 ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION For the GCC compiler
226 on VxWorks we have to
227 explicitly instantiate static template
228 members else we get multiple instances
230 ACE_HAS_GETPAGESIZE Platform supports
231 getpagesize() call (otherwise,
232 ACE_PAGE_SIZE must be defined,
234 ACE_HAS_GETRUSAGE Platform supports the
235 getrusage() system call.
236 ACE_HAS_GETRUSAGE_PROTOTYPE Platform has a getrusage ()
237 prototype in sys/resource.h
238 that differs from the one in
240 ACE_HAS_GPERF The GPERF utility is compiled
242 ACE_HAS_GETIFADDRS This platform has ifaddrs.h and
243 the getifaddrs() function. This
244 is used in preference to
245 the SIOCGIFCONF ioctl call, since
246 it is much simpler and supports
247 IPv6 and non-IP interfaces better.
248 ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT Optimize
249 ACE_Handle_Set::count_bits for
250 select() operations (common
252 ACE_HAS_LLSEEK Platform supports llseek.
253 ACE_HAS_HI_RES_TIMER Compiler/platform supports
254 SunOS high resolution timers
255 ACE_HAS_INLINED_OSCALLS Inline all the static class OS
256 methods to remove call
258 ACE_HAS_INT_SWAB Platform's swab function has length
259 argument of type int, not ssize_t.
260 ACE_HAS_IP_MULTICAST Platform supports IP multicast
261 ACE_HAS_IPV6 Platform supports IPv6.
262 ACE_USES_IPV4_IPV6_MIGRATION Enable IPv6 support in ACE on
263 platforms that don't have IPv6
264 turned on by default.
265 ACE_HAS_NONSTATIC_OBJECT_MANAGER Causes the ACE_Object_Manager
266 instance to be created in main
267 (int, char *[]), instead of as
268 a static (global) instance.
269 ACE_HAS_THR_KEYDELETE Platform supports
270 thr_keydelete (e.g,. UNIXWARE)
271 ACE_HAS_LINUX_NPTL Linux platform (with kernel >= 2.6.x)
272 with GLibc including new NPTL (Native
273 POSIX Thread Library).
274 This triggers extended POSIX checks
275 since the NPTL library is (almost) fully
277 ACE_HAS_LOG_MSG_NT_EVENT_LOG Platform supports Windows NT event
278 log so we can create an
279 ACE_Log_Msg_Backend to log to it.
280 ACE_HAS_MALLOC_STATS Enabled malloc statistics
282 ACE_HAS_MEMCHR Use native implementation of memchr.
283 ACE_HAS_MINIMAL_ACE_OS Disables some #includes in ace/OS.*.
284 ACE_HAS_MFC Platform supports Microsoft
286 ACE_HAS_MSG Platform supports recvmsg and
288 ACE_HAS_MT_SAFE_MKTIME Platform supports MT safe
289 mktime() call (do any of
291 ACE_HAS_MUTEX_TIMEOUTS Compiler supports timed mutex
293 (e.g. pthread_mutex_timedlock()).
294 ACE_HAS_NONCONST_CLOCK_SETTIME Platform uses non-const
295 struct timespec * in call to
297 ACE_HAS_NONCONST_GETBY Platform uses non-const char *
298 in calls to gethostbyaddr,
299 gethostbyname, getservbyname
300 ACE_HAS_NONCONST_MSGSND Platform has a non-const
301 parameter to msgsend().
302 ACE_HAS_NONCONST_READV Platform omits const qualifier from
303 iovec parameter in readv() prototype.
304 ACE_HAS_NONCONST_SELECT_TIMEVAL Platform's select() uses
305 non-const timeval* (only found
307 ACE_HAS_NONCONST_SENDMSG Platform omits const qualifier
308 from msghdr parameter in sendmsg()
310 ACE_HAS_NONCONST_SETRLIMIT Platform omits const qualifier
311 from rlimit parameter in setrlimit()
313 ACE_HAS_NONCONST_SWAB Platform's swab function has non
315 ACE_HAS_NONCONST_WRITEV Platform omits const qualifier from
316 iovec parameter in writev() prototype.
317 ACE_HAS_ONLY_SCHED_OTHER Platform, only supports SCHED_OTHER
318 POSIX scheduling policy.
319 ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with
322 ACE_HAS_3_PARAM_WCSTOK Platform has 3-parameter version
323 of wcstok(), which was added in
324 1994 in the ISO C standard Normative
325 Addendum 1. Other standards like XPG4
326 define a 2 parameter wcstok().
327 ACE_HAS_PENTIUM Platform is an Intel Pentium
329 ACE_HAS_POLL Platform contains <poll.h>
330 ACE_HAS_POSITION_INDEPENDENT_POINTERS Platform supports
331 "position-independent" features
332 provided by ACE_Based_Pointer<>.
333 ACE_HAS_POSIX_MESSAGE_PASSING Platform supports POSIX message queues.
334 Corresponds to _POSIX_MESSAGE_PASSING
335 constant in <unistd.h>.
336 ACE_HAS_POSIX_NONBLOCK Platform supports POSIX
338 ACE_HAS_POSIX_REALTIME_SIGNALS Platform supports POSIX RT signals.
339 Corresponds to _POSIX_REALTIME_SIGNALS
340 constant in <unistd.h>.
341 ACE_HAS_POSIX_SEM Platform supports POSIX
342 real-time semaphores (e.g.,
343 VxWorks). Corresponds
344 to _POSIX_SEMAPHORES constant
346 ACE_HAS_POSIX_SEM_TIMEOUT Platform supports timed wait operation
347 on POSIX realtime semaphores.
348 ACE_HAS_POSIX_TIME Platform supports the POSIX
350 ACE_HAS_PROC_FS Platform supports the /proc
351 file system and defines tid_t
353 ACE_HAS_POWERPC_TIMER Platform supports PowerPC
355 ACE_HAS_PTHREADS Platform supports POSIX
356 Pthreads, of one form or
357 another. This macro says the
358 platform has a pthreads
359 variety - should also define
360 one of the below to say which
361 one. Also may need some
362 ACE_HAS_... thing for
364 ACE_HAS_PTHREADS_UNIX98_EXT Platform has the UNIX98 extensions to
366 ACE_HAS_PTHREAD_ATTR_SETCREATESUSPEND_NP Platform has
367 pthread_attr_setcreatesuspend_np().
368 ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP Platform has pthread_condattr_setkind_np().
369 ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP Platform has
370 pthread_mutexattr_setkind_np().
371 ACE_HAS_PTHREAD_GETCONCURRENCY Platform has pthread_getconcurrency().
372 ACE_HAS_PTHREAD_SETCONCURRENCY Platform has pthread_setconcurrency().
373 ACE_HAS_PTHREAD_PROCESS_ENUM pthread.h declares an enum with
374 PTHREAD_PROCESS_PRIVATE and
375 PTHREAD_PROCESS_SHARED values.
376 ACE_HAS_PTHREAD_SETSTACK Platform has pthread_attr_setstack().
377 ACE_HAS_PTHREAD_NP_H Platform has <pthread_np.h> FreeBSD
378 declares non-portable (*_np) pthread
379 functions in this header.
380 ACE_HAS_PURIFY Purify'ing. Set by wrapper_macros.GNU.
381 ACE_HAS_QUANTIFY Quantify'ing. Set by wrapper_macros.GNU.
382 ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS Platform will recurse
383 infinitely on thread exits
384 from TSS cleanup routines
385 ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant
386 functions (i.e., all the POSIX
388 ACE_HAS_XPG4_MULTIBYTE_CHAR Platform has support for
389 multi-byte character support
390 compliant with the XPG4
391 Worldwide Portability
392 Interface wide-character
394 ACE_HAS_REGEX Platform supports the POSIX
395 regular expression library
396 ACE_HAS_SELECT_H Platform has special header for select().
397 ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL For Win32: Use Select_Reactor
398 as default implementation of
401 ACE_HAS_SEMUN Compiler/platform defines a
402 union semun for SysV shared
404 ACE_HAS_SIGACTION_CONSTP2 Platform's sigaction() function takes
405 const sigaction* as 2nd parameter.
406 ACE_HAS_SIGINFO_T Platform supports SVR4
408 ACE_HAS_SIGSUSPEND Platform supports sigsuspend()
409 ACE_HAS_SIGISMEMBER_BUG Platform has bug with
411 ACE_HAS_SIGNAL_OBJECT_AND_WAIT Platform supports the Win32
412 SignalObjectAndWait() function
413 (WinNT 4.0 and beyond).
414 ACE_HAS_SIGWAIT Platform/compiler has the
416 ACE_HAS_SIG_ATOMIC_T Compiler/platform defines the
418 ACE_HAS_SIG_C_FUNC Compiler requires extern "C"
419 functions for signals.
420 ACE_HAS_SOCKADDR_IN_SIN_LEN Platform has sin_len member in struct
422 ACE_HAS_SOCKADDR_IN6_SIN_LEN Platform has sin6_len member in struct
424 ACE_HAS_SOCKADDR_MSG_NAME Platform requires (struct
425 sockaddr *) for msg_name field
427 ACE_HAS_SOCKLEN_T Platform provides socklen_t
428 type, such as Linux with
430 ACE_HAS_SOCK_BUF_SIZE_MAX Platform limits the maximum socket
432 ACE_HAS_SSIZE_T Compiler supports the ssize_t
434 ACE_HAS_STRBUF_T Compiler/platform supports
436 ACE_HAS_STRDUP_EMULATION Use ACE's strdup() emulation (even
437 if platform has a native strdup()).
438 This is useful if you need control
439 over what memory allocator is used.
440 ACE_HAS_WCSDUP_EMULATION Use ACE's wcsdup() emulation (even
441 if platform has a native wcsdup()).
442 This is useful if you need control
443 over what memory allocator is used.
444 ACE_HAS_STRNLEN Platform supports strnlen(3).
445 ACE_HAS_STREAMS Platform supports STREAMS
446 ACE_HAS_STREAM_PIPES Platform supports STREAM pipes
447 ACE_HAS_STRICT Use the STRICT compilation mode on Win32.
448 ACE_HAS_SVR4_DYNAMIC_LINKING Compiler/platform supports
449 SVR4 dynamic linking semantics
450 ACE_HAS_SVR4_GETTIMEOFDAY Compiler/platform supports
451 SVR4 gettimeofday() prototype
452 ACE_HAS_SVR4_SIGNAL_T Compiler/platform supports
454 ACE_HAS_SYSV_IPC Platform supports System V IPC
455 (most versions of UNIX, but
457 ACE_HAS_SYS_FILIO_H Platform provides
459 ACE_HAS_SYS_SOCKIO_H Compiler/platform provides the
461 ACE_HAS_SYS_SYSCALL_H Compiler/platform contains the
462 <sys/syscall.h> file.
463 ACE_HAS_TEMPLATE_TYPEDEFS Compiler implements templates
464 that support typedefs inside
465 of classes used as formal
466 arguments to a template
468 ACE_HAS_TERMIO Platform has terminal ioctl
469 flags like TCGETS and TCSETS and
471 ACE_HAS_TERMIOS Platform has POSIX terminal
472 interface and termios struct.
473 ACE_HAS_LAZY_MAP_MANAGER ACE supports lazy Map Managers
474 that allow deletion of entries
475 during active iteration.
476 ACE_HAS_THREADS Platform supports threads
477 ACE_HAS_THREAD_SAFE_ACCEPT Platform allows multiple
478 threads to call accept() on
479 the same port (e.g., WinNT).
480 ACE_HAS_THREAD_SELF Platform has thread_self()
481 rather than pthread_self()
483 ACE_HAS_THREAD_SPECIFIC_STORAGE Compiler/platform has
484 thread-specific storage
485 ACE_HAS_THR_C_DEST The pthread_keycreate()
486 routine *must* take extern C
488 ACE_HAS_THR_C_FUNC The pthread_create() routine
491 ACE_HAS_TIMEZONE Platform/compiler supports
492 global "timezone" variable.
493 ACE_HAS_TIMEZONE_GETTIMEOFDAY Platform/compiler supports
494 timezone * as second parameter
496 ACE_HAS_TLI Platform supports TLI. Also
497 see ACE_TLI_TCP_DEVICE. If the
498 platform supports XTI, set ACE_HAS_XTI
500 ACE_HAS_TLI_PROTOTYPES Platform provides TLI function
502 ACE_HAS_TR24731_2005_CRT The platform provides an implementation
503 of C99 draft TR24731 (October 2005),
504 C run-time with more secure parameters.
505 ACE_HAS_TSS_EMULATION ACE provides TSS emulation.
507 ACE_DEFAULT_THREAD_KEYS.
508 ACE_HAS_UALARM Platform supports ualarm()
509 ACE_HAS_UCONTEXT_T Platform supports ucontext_t
510 (which is used in the extended
512 ACE_HAS_VALGRIND Running with valgrind
513 ACE_HAS_VERBOSE_NOTSUP Prints out console message in
514 ACE_NOTSUP. Useful for
515 tracking down origin of
517 ACE_HAS_VERSIONED_NAMESPACE Wrap all library code within a
518 "versioned namespace" to
519 prevent symbol conflicts with
520 other versions of ACE shared
521 libraries in third party
522 libraries. Default namespace
523 name may be overridden by
524 defining preprocessor symbol
525 ACE_VERSIONED_NAMESPACE_NAME
527 ACE_LACKS_INTPTR_T Platform lacks the intptr_t type
528 ACE_LACKS_UINTPTR_T Platform lacks the uintptr_t type.
530 ACE_INT8_FORMAT_SPECIFIER String literal containing *printf
531 format specifier (including the '%')
532 to be used for ACE_INT8 values. If
533 not defined, ACE will attempt to
534 determine the correct setting.
535 ACE_INT16_FORMAT_SPECIFIER String literal containing *printf
536 format specifier (including the '%')
537 to be used for ACE_INT16 values. If
538 not defined, ACE will attempt to
539 determine the correct setting.
540 ACE_INT32_FORMAT_SPECIFIER String literal containing *printf
541 format specifier (including the '%')
542 to be used for ACE_INT32 values. If
543 not defined, ACE will attempt to
544 determine the correct setting.
545 ACE_INT64_FORMAT_SPECIFIER String literal containing *printf
546 format specifier (including the '%')
547 to be used for ACE_INT64 values. If
548 not defined, ACE will attempt to
549 determine the correct setting.
550 ACE_UINT8_FORMAT_SPECIFIER String literal containing *printf
551 format specifier (including the '%')
552 to be used for ACE_UINT8 values. If
553 not defined, ACE will attempt to
554 determine the correct setting.
555 ACE_UINT16_FORMAT_SPECIFIER String literal containing *printf
556 format specifier (including the '%')
557 to be used for ACE_UINT16 values. If
558 not defined, ACE will attempt to
559 determine the correct setting.
560 ACE_UINT32_FORMAT_SPECIFIER String literal containing *printf
561 format specifier (including the '%')
562 to be used for ACE_UINT32 values. If
563 not defined, ACE will attempt to
564 determine the correct setting.
565 ACE_UINT64_FORMAT_SPECIFIER String literal containing *printf
566 format specifier (including the '%')
567 to be used for ACE_UINT64 values. If
568 not defined, ACE will attempt to
569 determine the correct setting.
571 ACE_HAS_VOIDPTR_GETTIMEOFDAY Platform/compiler supports
572 void * as second parameter
574 ACE_HAS_VOIDPTR_MMAP Platform requires void * for
576 ACE_HAS_VOIDPTR_SOCKOPT OS/compiler uses void * arg 4
577 setsockopt() rather than const
579 ACE_HAS_WCSNLEN Platform supports wcsnlen(3).
580 ACE_HAS_WIN32_OVERLAPPED_IO Platform has Windows overlapped I/O;
581 requires I/O completion ports.
582 ACE_HAS_WIN32_TRYLOCK The Win32 platform support
583 TryEnterCriticalSection()
584 (WinNT 4.0 and beyond)
585 ACE_HAS_WINSOCK2 The Win32 platform supports
587 ACE_HAS_XLI Platform has the XLI version
589 ACE_HAS_XTI Platform has XTI
590 (X/Open-standardized superset
591 of TLI). Implies ACE_HAS_TLI
592 but uses a different header
594 ACE_INITIALIZE_MEMORY_BEFORE_USE Memory is explicitly initialized before
595 use. Useful when using a profiler like
597 ACE_LACKS_ACCESS Platform lacks access() (e.g.,
599 ACE_LACKS_ACE_IOSTREAM Platform can not build
600 ace/IOStream{,_T}.cpp. This
601 does not necessarily mean that
602 the platform does not support
604 ACE_LACKS_AUTO_MMAP_REPLACEMENT No system support for replacing any
606 ACE_LACKS_BSEARCH Compiler/platform lacks the
607 standard C library bsearch()
609 ACE_LACKS_CLOSEDIR Platform lacks closedir and the closedir
610 emulation must be used
611 ACE_LACKS_OPENDIR Platform lacks opendir and the opendir
612 emulation must be used
613 ACE_LACKS_READDIR Platform lacks readdir and the readdir
614 emulation must be used
615 ACE_LACKS_CONST_TIMESPEC_PTR Platform forgot const in
616 cond_timewait (e.g., HP/UX).
617 ACE_LACKS_COND_T Platform lacks condition
618 variables (e.g., Win32 and
620 ACE_LACKS_CONDATTR_PSHARED Platform has no implementation
622 pthread_condattr_setpshared(),
623 even though it supports
625 ACE_LACKS_DUP2 Platform lacks dup2().
626 ACE_LACKS_FCNTL Platform lacks POSIX-style fcntl ().
627 ACE_LACKS_FSYNC Platform lacks fsync().
628 ACE_LACKS_INLINE_FUNCTIONS Platform can't handle "inline"
630 ACE_LACKS_EXEC Platform lacks the exec()
631 family of system calls (e.g.,
633 ACE_LACKS_FILELOCKS Platform lacks file locking
635 ACE_LACKS_FORK Platform lacks the fork()
636 system call (e.g., Win32,
638 ACE_LACKS_GETPGID Platform lacks getpgid() call
641 ACE_LACKS_GETSERVBYNAME Platforms lacks
642 getservbyname() (e.g., VxWorks)
643 ACE_LACKS_GETIPNODEBYADDR Platform lacks getipnodebyaddr().
644 ACE_LACKS_GETIPNODEBYNAME Platform lacks getipnodebyname().
645 ACE_LACKS_INET_ATON Platform lacks the inet_aton()
647 ACE_LACKS_IOSTREAM_FX iostream header does not
648 declare ipfx (), opfx (),
650 ACE_LACKS_KEY_T Platform lacks key_t (e.g.,
652 ACE_LACKS_LINEBUFFERED_STREAMBUF Platform lacks streambuf
654 ACE_LACKS_LSTAT Platform lacks the lstat() function.
655 ACE_LACKS_MADVISE Platform lacks madvise()
657 ACE_LACKS_MKFIFO Platform lacks mkfifo() e.g.,
658 VxWorks, pSoS, and WinNT.
659 ACE_LACKS_MKTEMP Platform lacks the mktemp() function.
660 ACE_LACKS_MKSTEMP Platform lacks the mkstemp() function.
661 ACE_LACKS_MMAP The platform doesn't have
663 ACE_LACKS_MODE_MASKS Platform/compiler doesn't have
665 ACE_LACKS_MPROTECT The platform doesn't have
666 mprotect(2) (e.g., EPLX real
667 time OS from CDC (based on
669 ACE_LACKS_MSG_ACCRIGHTS Platform defines ACE_HAS_MSG,
670 but lacks msg_accrights{,len}.
671 ACE_LACKS_MSYNC Platform lacks msync() (e.g.,
673 ACE_LACKS_MUTEXATTR_PSHARED Platform lacks
674 pthread_mutexattr_setpshared().
675 ACE_LACKS_NAMED_POSIX_SEM Platform lacks named POSIX
677 ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support
678 reentrant netdb functions
684 ACE_LACKS_NEW_H OS doesn't have, or we don't want to
686 ACE_LACKS_PERFECT_MULTICAST_FILTERING Platform lacks IGMPv3 "perfect" filtering
687 of multicast dgrams at the socket level.
688 If == 1, ACE_SOCK_Dgram_Mcast will bind
689 the first joined multicast group to the
690 socket, and all future joins on that
691 socket will fail with an error.
692 ACE_LACKS_PRAGMA_ONCE Compiler complains about #pragma once
693 ACE_LACKS_PTHREAD_CANCEL Platform lacks
695 ACE_LACKS_PTHREAD_SCOPE_PROCESS Platform lacks support for
696 PTHREAD_SCOPE_PROCESS
697 ACE_LACKS_PTHREAD_SIGMASK Platform lacks pthread_sigmask ().
698 ACE_LACKS_PTHREAD_THR_SIGSETMASK Platform lacks
699 pthread_thr_sigsetmask (e.g.,
700 MVS, HP/UX, and OSF/1 3.2)
701 ACE_LACKS_PUTENV_PROTOTYPE Platform/compiler lacks the
702 putenv() prototype (e.g.,
704 ACE_LACKS_QSORT Compiler/platform lacks the
705 standard C library qsort()
707 ACE_LACKS_READLINK Platform lacks the readlink() function.
708 ACE_LACKS_READV Platform doesn't define readv,
710 ACE_LACKS_RENAME Platform lacks rename().
711 ACE_LACKS_RLIMIT Platform/compiler lacks
712 {get,set}rlimit() function
714 ACE_LACKS_READDIR_R Platform uses ACE_HAS_DIRENT
715 but does not have readdir_r
717 ACE_LACKS_REALPATH Platform/compiler lacks
718 realpath () function (e.g.,
720 ACE_LACKS_RECVMSG Platform lacks recvmsg()
722 ACE_LACKS_RWLOCK_T Platform lacks readers/writer
724 ACE_LACKS_RWLOCKATTR_PSHARED Platform lacks
725 pthread_rwlockattr_setpshared().
726 ACE_LACKS_SBRK Platform lacks a working
727 sbrk() (e.g., Win32 and
729 ACE_LACKS_SCANDIR_PROTOTYPE Platform/compiler lacks
732 ACE_LACKS_SEEKDIR Platform uses ACE_HAS_DIRENT
733 but does not have seekdir ().
734 ACE_LACKS_SEMBUF_T Platform lacks struct sembuf
735 (e.g., Win32 and VxWorks)
736 ACE_LACKS_SETDETACH Platform lacks
737 pthread_attr_setdetachstate()
739 ACE_LACKS_SETSCHED Platform lacks
740 pthread_attr_setsched()
742 ACE_LACKS_SIGACTION Platform lacks struct
743 sigaction (e.g., Win32)
744 ACE_LACKS_SIGSET Platform lacks signal sets
746 ACE_LACKS_STRPTIME Platform/compiler lacks the strptime()
748 ACE_LACKS_WCSCHR Platform/compiler lacks wcschr()
749 ACE_LACKS_STRDUP Platform/compiler lacks strdup()
750 ACE_LACKS_WCSDUP Platform/compiler lacks wcsdup()
751 ACE_LACKS_WCSRCHR Platform/compiler lacks wcsrchr()
752 ACE_LACKS_SWAB Platform/compiler lacks
754 ACE_LACKS_SYS_MSG_H Platform lacks sys/msg.h
756 ACE_LACKS_SYS_PARAM_H Platform lacks <sys/param.h>
758 ACE_LACKS_SENDMSG Platform lacks sendmsg()
760 ACE_LACKS_SI_ADDR Platform lacks the si_addr
761 field of siginfo_t (e.g.,
762 VxWorks and HP/UX 10.x)
763 ACE_LACKS_SYMLINKS Platform lacks symbolic links
764 ACE_LACKS_SYSV_SHMEM Platform lacks System V shared
765 memory (e.g., Win32 and
767 ACE_LACKS_SIGINFO_H Platform lacks the siginfo.h
768 include file (e.g., MVS)
769 ACE_LACKS_SOCKETPAIR Platform lacks the
771 ACE_LACKS_STRCASECMP Compiler/platform lacks
772 strcasecmp() (e.g., DG/UX,
774 ACE_LACKS_STRRECVFD Platform doesn't define struct
776 ACE_LACKS_SYSCALL Platform doesn't have
778 ACE_LACKS_T_ERRNO Header files lack t_errno for
780 ACE_LACKS_TCP_NODELAY OS does not support TCP_NODELAY.
781 ACE_LACKS_TELLDIR Platform uses ACE_HAS_DIRENT
782 but does not have telldir ().
783 ACE_LACKS_THREAD_STACK_SIZE Platform lacks
784 pthread_attr_setstacksize()
785 (e.g., Linux pthreads)
786 ACE_LACKS_TIMEDWAIT_PROTOTYPES MIT pthreads platform lacks
787 the timedwait prototypes
788 ACE_LACKS_TIMESPEC_T Platform does not define
789 timepec_t as a typedef for
791 ACE_LACKS_TRUNCATE Platform doesn't have truncate()
793 ACE_LACKS_UCONTEXT_H Platform lacks the ucontext.h
795 ACE_LACKS_UMASK Platform lacks umask function
796 ACE_LACKS_UNBUFFERED_STREAMBUF Platform lacks streambuf
798 ACE_LACKS_UNISTD_H Platform lacks the unistd.h
799 file (e.g., VxWorks and Win32)
800 ACE_LACKS_UNIX_DOMAIN_SOCKETS ACE platform has no UNIX
802 ACE_LACKS_UNIX_SIGNALS Platform lacks full signal
803 support (e.g., Win32).
804 ACE_LACKS_UTSNAME_T Platform lacks struct utsname
805 (e.g., Win32 and VxWorks)
806 ACE_LACKS_UNAME Platform lacks uname calls
807 ACE_LACKS_WAIT The platform lacks wait
808 ACE_LACKS_WIN32_GETPROCESSTIMES The Windows platform doesn't have
810 ACE_LACKS_WRITEV Platform doesn't define
811 writev, so use our own
812 ACE_NEEDS_HUGE_THREAD_STACKSIZE Required by platforms with
813 small default stacks.
814 ACE_NEEDS_SCHED_H Platform needs to #include
816 to get thread scheduling
819 ACE_NO_WIN32_LEAN_AND_MEAN If this is set, then ACE does not
820 define WIN32_LEAN_AND_MEAN before
821 including <windows.h>. Needed for
822 code that uses non-lean Win32
823 facilities such as COM.
825 ACE_WSTRING_HAS_USHORT_SUPPORT If a platform has wchar_t as a
827 ACE_WString doesn't have a
828 constructor that understands
829 an ACE_USHORT16 string. So
831 one. (mostly used my ACE Name
834 ACE_HAS_BROKEN_PREALLOCATED_OBJECTS_AFTER_FORK
835 Under QNX/RTP the objects preallocated
836 in ACE_OS_Object_Manager cannot be
837 destroyed after a fork() call.
838 Since these objects are only destroyed
839 at application shutdown we take the
840 simpler approach of not destroying
842 Both QNX/RTP and LynxOS suffer from
845 ACE_DONT_INIT_WINSOCK This definition defines whether or not
846 to explicitly initialize Winsock during
847 ACE::init() (i.e., whether WSAStartup()
848 is called). Some Win32 platforms have
849 dependent characteristics between
850 ACE initialization and
851 network initialization.
853 ----------------------------------------
855 The following macros determine the svc.conf file format ACE uses.
859 ACE_HAS_CLASSIC_SVC_CONF This macro forces ACE to use
860 the classic svc.conf format.
862 ACE_HAS_XML_SVC_CONF This macro forces ACE to use the XML
865 ACE_USES_CLASSIC_SVC_CONF This macro should be defined
866 as 0 or 1, depending on the
867 preferred svc.conf file
868 format. Defining this macro
869 to 0 means ACE will use XML
870 svc.conf file format.
871 Defining it to 1 will force
872 ACE to use the classic
874 ** This macro takes precedence
875 ** over previous two macros.
877 ----------------------------------------
878 The following is a partial list of where some of these macros are used
879 in the code. This list was originally compiled by Jam Hamidi
880 (jh1@core01.osi.com). It is now hopelessly out of date. Hopefully,
881 someone will come along and update it....
887 libsrc/IPC_SAP/SOCK_SAP/SOCK_Connect.C
888 for allocation of iovp
890 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
891 for alocation of iovp
894 alloca() allocates size bytes of space in the stack frame of
895 the caller, and returns a pointer to the allocated block.
896 This temporary space is automatically freed when the caller
897 returns. Note: if the allocated block is beyond the current
898 stack limit, the resulting behavior is undefined.
900 ACE_HAS_AUTOMATIC_INIT_FINI:
901 ----------------------------
904 libsrc/Service_Configurator/Service_Repository.i
905 libsrc/Service_Configurator/Parse_Node.i
907 include/Service_Repository.i
910 _init() initializes a loadable module. It is called before
911 any other routine in a loadable module.
912 _info() returns information about a loadable module.
913 _fini() should return the return value from mod_remove(9F).
914 This flag if set, doesn't do anything. If not set, forces
915 _init() and _fini() to be executed as is:
916 dlsym ((char *) handle, "_fini").
918 ACE_HAS_HI_RES_TIMER:
919 ---------------------
922 libsrc/Misc/High_Res_Timer.h
923 libsrc/Misc/High_Res_Timer.C
924 include/High_Res_Timer.h
927 C++ wrapper around gethrtime(), which returns a long long.
928 gethrtime() returns the current high-resolution real time.
929 Time is expressed as nanoseconds since some arbitrary time
930 in the past; it is not correlated in any way to the time of
931 day, and thus is not subject to resetting, drifting, etc.
948 ACE_HAS_POSIX_NONBLOCK:
949 -----------------------
955 if defined, sets ACE_NONBLOCK and O_NONBLOCK
956 O_NONBLOCK is used in libsrc/Misc/misc.C to do a
957 fcntl (fd, F_SETFL, opt)
958 ACE_NONBLOCK is used in libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv.C in the
959 disable member function and options passed to the open function
960 in libsrc/IPC_SAP/FIFO_SAP/FIFO.C
968 libsrc/Misc/Profile_Timer.i
971 if set, includes <sys/procfs.h>
972 the PIOCUSAGE define is used in Profile_Timer.
975 procfs.h defines things for the prpsinfo structure (basically to
976 do a "ps" from inside a program).
983 libsrc/Misc/Profile_Timer.h
984 libsrc/Misc/Profile_Timer.C
987 If defined, declares the Profile_Timer class that does start(),
988 stop() and basically gets real_time, user_time, system_time for
990 This stuff is highly non-portable.
996 libsrc/Semaphores/Semaphore_Simple.h
999 if not defined, defines semun as:
1001 int val; /* value for SETVAL */
1002 struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
1003 ushort *array; /* array for GETALL & SETALL */
1007 ACE_HAS_SIG_ATOMIC_T:
1008 ---------------------
1014 if not defined, does a:
1015 typedef int sig_atomic_t;
1016 This is used in the Reactor and service configurator.
1025 if not defined, does a
1026 typedef int ssize_t;
1027 used mostly in IPC_SAP. (don't confuse with size_t).
1036 if not defined, declares the strbuf structure as:
1039 int maxlen; /* no. of bytes in buffer */
1040 int len; /* no. of bytes returned */
1041 void *buf; /* pointer to data */
1045 defined in /usr/include/sys/stropts.h
1047 uses strbuf as parameter to putmsg, putpmsg:
1048 int putmsg(int fildes, const struct strbuf *ctlptr,
1049 const struct strbuf *dataptr, int flags);
1057 libsrc/IPC_SAP/SOCK_SAP/LSOCK.C
1060 if defined, includes <stropts.h>
1063 ACE_HAS_STREAM_PIPES:
1064 ---------------------
1067 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.h
1068 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1069 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.h
1070 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.C
1071 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.h
1072 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.C
1073 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.h
1074 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.C
1075 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.i
1076 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.h
1077 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.C
1078 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.i
1081 if not set, won't be able to use the SPIPE class (IPC_SAP) with
1085 ACE_HAS_SVR4_DYNAMIC_LINKING:
1086 -----------------------------
1090 tests/Service_Configurator/CCM_App.C
1093 if defined, includes <dlfcn.h>
1094 with dlopen(), dlsym(), etc..
1097 ACE_HAS_SVR4_GETTIMEOFDAY:
1098 --------------------------
1102 libsrc/Reactor/Timer_Queue.i
1105 has to do with gettimeofday ().
1108 gettimeofday (struct timeval *tp)
1117 #if defined (ACE_HAS_POLL)
1118 #include /**/ <poll.h>
1119 #endif /* ACE_HAS_POLL */
1121 ACE_HAS_SVR4_SIGNAL_T:
1122 ----------------------
1128 #if defined (ACE_HAS_SVR4_SIGNAL_T)
1129 typedef void (*SignalHandler)(int);
1130 typedef void (*SignalHandlerV)(void);
1131 #elif defined (ACE_HAS_SIGNALHANDLERV_INT_ARG)
1132 typedef void (*SignalHandler)(int);
1133 typedef void (*SignalHandlerV)(int);
1135 #define SignalHandler SIG_PF
1136 typedef void (*SignalHandlerV)(...);
1137 #endif /* ACE_HAS_SVR4_SIGNAL_T */
1140 ACE_HAS_SYS_FILIO_H:
1141 --------------------
1147 if not defined, includes <sys/filio.h>.
1148 didn't find any reference to anything in this file in the ACE code.
1151 filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
1152 for FIOLFS,.. solaris has this to say:
1154 * ioctl's for Online: DiskSuite.
1155 * WARNING - the support for these ioctls may be withdrawn
1156 * in the future OS releases.
1160 ACE_HAS_TEMPLATE_TYPEDEFS:
1161 --------------------------
1167 cfront-based C++ compilers don't implement templates that support
1168 classes with typedefs of other types as formal arguments. This
1169 typedef uses the C++ preprocessor to work around this problem.
1175 libsrc/Service_Configurator/Svc_Conf.y.C
1176 libsrc/Service_Configurator/Thread_Spawn.i
1177 libsrc/Threads/Synch.C
1178 libsrc/Threads/Synch.i
1179 libsrc/Threads/Thr_Manager.i
1183 libsrc/ASX/Stream_Modules.C
1184 libsrc/ASX/Multiplexor.C
1185 libsrc/ASX/Message_List.C
1186 include/Message_List.h
1188 include/Multiplexor.h
1191 include/Stream_Modules.h
1192 include/Service_Types.h
1193 include/Thread_Spawn.h
1195 include/Thr_Manager.h
1198 We use Message_List.h even in a non-threaded environment.
1199 our XOMessageList.h does this by #ifdefs around Threaded things.
1209 if set, includes <tiuser.h>
1212 in conjunction with t_bind, t_accept, etc.. transport layer.
1216 ----------------------------
1218 ace/Base_Thread_Adapter.h
1219 ace/Base_Thread_Adapter.inl
1220 ace/Base_Thread_Adapter.cpp
1223 When using gprof mainly on Linux, #define ACE_USES_GPROF
1224 will add calls to getitimer/setitimer in order to initialize profile
1225 timer and overcome the problem of gprof with multithreaded applications.
1227 ACE_QTREACTOR_CLEAR_PENDING_EVENTS:
1228 ----------------------------
1231 QtReactor by default does not clear qt events pending for
1232 activated socket. Clearing costs much, at least 2 hash accesses
1233 in ACE, and 2 another in Qt. It is also better to not clear
1234 pending events as some side effects are unknown. However,
1235 when events are not clear, then some user applications may be
1236 confused by handle_input/output/exception called without any
1237 data eg. in ACE_Acceptor::make_svc_handler. This swithc is
1238 intended to quickly fix user application which does not
1239 follow some reactor rules.
1241 It seems linux::qt does not queue pending events. Do not define
1244 Windows::qt queues pending events. If user application has handle_*
1245 methods which cannot be called without data, then turn on this switch
1246 to quickly fix the bug. However, one should seriously fix the