Changes to attempt to silence bcc64x
[ACE_TAO.git] / ACE / ace / README
blobeb25e0dda78960d76e9741cb52151bae6bb6dfb0
1 ACE Portability Macros
2 ----------------------
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.
14 Macro                                   Description
15 -----                                   -----------
17 ACE_HAS_DUMP                            Used to enable the dump()
18                                         method bodies.  If not
19                                         defined, the bodies are ifdef
20                                         out in order to reduce
21                                         footprint.  By default, it is
22                                         not defined.
23 ACE_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES
24                                         Win32 only.  Users want to use
25                                         a predefined security
26                                         attributes defined in
27                                         ACE_OS::default_win32_security_attributes
28                                         as the default security
29                                         object.
30 ACE_DISABLE_MKTEMP                      Disable availability of
31                                         ACE_OS::mktemp().
32 ACE_DISABLE_TEMPNAM                     Disable availability of
33                                         ACE_OS::tempnam().
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
38                                         names specified.
39 ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
40                                         Application will allocate its
41                                         own object manager.  This
42                                         implicitly defines
43                                         ACE_HAS_NONSTATIC_OBJECT_MANAGER.
44                                         Usually used with MFC
45                                         applications.
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
54                                         addr characteristics.
55 ACE_MAIN                                Renames "main (int, char *[])",
56                                         for platforms such as g++/VxWorks
57                                         that don't allow "main".  Requires
58                                         the use of
59                                         ACE_HAS_NONSTATIC_OBJECT_MANAGER.
60 ACE_MKDIR_LACKS_MODE                    This platform has a mkdir function with
61                                         a mode argument
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
71                                         macros based on
72                                         ACE_TRACE_IMPL.  Not defining
73                                         it helps reduce footprint by
74                                         not requiring applications to
75                                         link in Trace.o.
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
95                                         dlsym()
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
98                                         work and you have to
99                                         explicitly specify the std
100                                         namespace.   This is needed
101                                         with the Borland 6 and earlier
102                                         compilers.
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
113                                         and fcntl).
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_.
130                                         Defaults to 64.
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
140                                         thread's ACE_Log_Msg
141                                         properties.
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
146                                         reordering.
147 ACE_HAS_CPU_SET_T                       Platform delivers cpu_set_t.
148 ACE_HAS_RECURSIVE_MUTEXES               Mutexes are inherently recursive
149                                         (e.g., Win32)
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
153                                         APIs for
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
160                                         glibc 2.0.
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
167                                         2.0.
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*,
177                                                           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
183                                         pwrite() support
184 ACE_HAS_ALLOCA                          Compiler/platform supports
185                                         alloca()
186 ACE_HAS_ALLOCA_H                        Compiler/platform has
187                                         <alloca.h>
188 ACE_HAS_AUTOMATIC_INIT_FINI             Compiler/platform correctly
189                                         calls init()/fini() for shared
190                                         libraries
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
199                                         and beyond).
200 ACE_HAS_CHARPTR_DL                      OS/platform uses char * for
201                                         dlopen/dlsym args, rather than
202                                         const char *.
203 ACE_HAS_CHARPTR_SOCKOPT                 OS/platform uses char * for
204                                         sockopt, rather than const
205                                         char *
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
211                                         clock_settime ()
212 ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES    Prototypes for both signal()
213                                         and struct sigaction are
214                                         consistent.
215 ACE_HAS_DIRENT                          Compiler/platform has Dirent
216                                         iterator functions
217 ACE_HAS_DLL                             Build ACE using the frigging
218                                         PC DLL nonsense...
219 ACE_HAS_EBCDIC                          Compile in the ACE code set classes
220                                         that support EBCDIC.
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
224                                         explicitly exported
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
229                                         of the same static.
230 ACE_HAS_GETPAGESIZE                     Platform supports
231                                         getpagesize() call (otherwise,
232                                         ACE_PAGE_SIZE must be defined,
233                                         except on Win32)
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
239                                         ace/OS.i.
240 ACE_HAS_GPERF                           The GPERF utility is compiled
241                                         for this platform
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
251                                         case)
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
257                                         overhead
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
276                                         POSIX compliant.
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
281                                         collection.
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
285                                         Foundation Classes
286 ACE_HAS_MSG                             Platform supports recvmsg and
287                                         sendmsg
288 ACE_HAS_MT_SAFE_MKTIME                  Platform supports MT safe
289                                         mktime() call (do any of
290                                         them?)
291 ACE_HAS_MUTEX_TIMEOUTS                  Compiler supports timed mutex
292                                         acquisitions
293                                         (e.g. pthread_mutex_timedlock()).
294 ACE_HAS_NONCONST_CLOCK_SETTIME          Platform uses non-const
295                                         struct timespec * in call to
296                                         clock_settime
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
306                                         on Linux right now)
307 ACE_HAS_NONCONST_SENDMSG                Platform omits const qualifier
308                                         from msghdr parameter in sendmsg()
309                                         prototype.
310 ACE_HAS_NONCONST_SETRLIMIT              Platform omits const qualifier
311                                         from rlimit parameter in setrlimit()
312                                         prototype.
313 ACE_HAS_NONCONST_SWAB                   Platform's swab function has non
314                                         const src argument
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
320                                         only two parameters
321                                         vs. three.
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
328                                         microprocessor.
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
337                                         O_NONBLOCK semantics
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
345                                         in <unistd.h>
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
349                                         struct timespec type
350 ACE_HAS_PROC_FS                         Platform supports the /proc
351                                         file system and defines tid_t
352                                         in <sys/procfs.h>
353 ACE_HAS_POWERPC_TIMER                   Platform supports PowerPC
354                                         time-base register.
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
363                                         extensions.
364 ACE_HAS_PTHREADS_UNIX98_EXT             Platform has the UNIX98 extensions to
365                                         Pthreads (rwlocks)
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
387                                         *_r functions).
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
393                                         classification.
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
399                                         Reactor instead of
400                                         WFMO_Reactor.
401 ACE_HAS_SEMUN                           Compiler/platform defines a
402                                         union semun for SysV shared
403                                         memory
404 ACE_HAS_SIGACTION_CONSTP2               Platform's sigaction() function takes
405                                         const sigaction* as 2nd parameter.
406 ACE_HAS_SIGINFO_T                       Platform supports SVR4
407                                         extended signals
408 ACE_HAS_SIGSUSPEND                      Platform supports sigsuspend()
409 ACE_HAS_SIGISMEMBER_BUG                 Platform has bug with
410                                         sigismember()
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
415                                         sigwait(2) prototype
416 ACE_HAS_SIG_ATOMIC_T                    Compiler/platform defines the
417                                         sig_atomic_t typedef
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
421                                         sockaddr_in.
422 ACE_HAS_SOCKADDR_IN6_SIN_LEN            Platform has sin6_len member in struct
423                                         sockaddr_in6.
424 ACE_HAS_SOCKADDR_MSG_NAME               Platform requires (struct
425                                         sockaddr *) for msg_name field
426                                         of struct msghdr.
427 ACE_HAS_SOCKLEN_T                       Platform provides socklen_t
428                                         type, such as Linux with
429                                         glibc2.
430 ACE_HAS_SOCK_BUF_SIZE_MAX               Platform limits the maximum socket
431                                         message size.
432 ACE_HAS_SSIZE_T                         Compiler supports the ssize_t
433                                         typedef
434 ACE_HAS_STRBUF_T                        Compiler/platform supports
435                                         struct strbuf
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
453                                         SVR4 signal typedef
454 ACE_HAS_SYSV_IPC                        Platform supports System V IPC
455                                         (most versions of UNIX, but
456                                         not Win32)
457 ACE_HAS_SYS_FILIO_H                     Platform provides
458                                         <sys/filio.h> header
459 ACE_HAS_SYS_SOCKIO_H                    Compiler/platform provides the
460                                         sockio.h file
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
467                                         class.
468 ACE_HAS_TERMIO                          Platform has terminal ioctl
469                                         flags like TCGETS and TCSETS and
470                                         termio struct.
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()
482                                         (e.g., DCETHREADS)
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
487                                         functions.
488 ACE_HAS_THR_C_FUNC                      The pthread_create() routine
489                                         *must* take extern C
490                                         functions.
491 ACE_HAS_TIMEZONE                        Platform/compiler supports
492                                         global "timezone" variable.
493 ACE_HAS_TIMEZONE_GETTIMEOFDAY           Platform/compiler supports
494                                         timezone * as second parameter
495                                         to gettimeofday()
496 ACE_HAS_TLI                             Platform supports TLI.  Also
497                                         see ACE_TLI_TCP_DEVICE. If the
498                                         platform supports XTI, set ACE_HAS_XTI
499                                         instead of this.
500 ACE_HAS_TLI_PROTOTYPES                  Platform provides TLI function
501                                         prototypes
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.
506                                         See also
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
511                                         signal API).
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
516                                         ACE_NOTSUP.
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
526                                         to desired 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
573                                         to gettimeofday
574 ACE_HAS_VOIDPTR_MMAP                    Platform requires void * for
575                                         mmap().
576 ACE_HAS_VOIDPTR_SOCKOPT                 OS/compiler uses void * arg 4
577                                         setsockopt() rather than const
578                                         char *
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
586                                         WinSock 2.0
587 ACE_HAS_XLI                             Platform has the XLI version
588                                         of TLI
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
593                                         file.
594 ACE_INITIALIZE_MEMORY_BEFORE_USE        Memory is explicitly initialized before
595                                         use. Useful when using a profiler like
596                                         purify or valgrind
597 ACE_LACKS_ACCESS                        Platform lacks access() (e.g.,
598                                         VxWorks)
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
603                                         iostreams.
604 ACE_LACKS_AUTO_MMAP_REPLACEMENT         No system support for replacing any
605                                         previous mappings.
606 ACE_LACKS_BSEARCH                       Compiler/platform lacks the
607                                         standard C library bsearch()
608                                         function
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
619                                         VxWorks)
620 ACE_LACKS_CONDATTR_PSHARED              Platform has no implementation
621                                         of
622                                         pthread_condattr_setpshared(),
623                                         even though it supports
624                                         pthreads!
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"
629                                         keyword correctly.
630 ACE_LACKS_EXEC                          Platform lacks the exec()
631                                         family of system calls (e.g.,
632                                         Win32, VxWorks)
633 ACE_LACKS_FILELOCKS                     Platform lacks file locking
634                                         mechanism
635 ACE_LACKS_FORK                          Platform lacks the fork()
636                                         system call (e.g., Win32,
637                                         VxWorks)
638 ACE_LACKS_GETPGID                       Platform lacks getpgid() call
639                                         (e.g., Win32, and
640                                         FreeBSD).
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()
646                                         function.
647 ACE_LACKS_IOSTREAM_FX                   iostream header does not
648                                         declare ipfx (), opfx (),
649                                         etc.
650 ACE_LACKS_KEY_T                         Platform lacks key_t (e.g.,
651                                         VxWorks, Win32)
652 ACE_LACKS_LINEBUFFERED_STREAMBUF        Platform lacks streambuf
653                                         "linebuffered ()".
654 ACE_LACKS_LSTAT                         Platform lacks the lstat() function.
655 ACE_LACKS_MADVISE                       Platform lacks madvise()
656                                         (e.g., Linux)
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
662                                         mmap(2).
663 ACE_LACKS_MODE_MASKS                    Platform/compiler doesn't have
664                                         open() mode masks.
665 ACE_LACKS_MPROTECT                      The platform doesn't have
666                                         mprotect(2) (e.g., EPLX real
667                                         time OS from CDC (based on
668                                         LYNX))
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.,
672                                         Linux)
673 ACE_LACKS_MUTEXATTR_PSHARED             Platform lacks
674                                         pthread_mutexattr_setpshared().
675 ACE_LACKS_NAMED_POSIX_SEM               Platform lacks named POSIX
676                                         semaphores
677 ACE_LACKS_NETDB_REENTRANT_FUNCTIONS     Platform does not support
678                                         reentrant netdb functions
679                                         (getprotobyname_r,
680                                         getprotobynumber_r,
681                                         gethostbyaddr_r,
682                                         gethostbyname_r,
683                                         getservbyname_r).
684 ACE_LACKS_NEW_H                         OS doesn't have, or we don't want to
685                                         use, new.h.
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
694                                         pthread_cancel().
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.,
703                                         LynxOS)
704 ACE_LACKS_QSORT                         Compiler/platform lacks the
705                                         standard C library qsort()
706                                         function
707 ACE_LACKS_READLINK                      Platform lacks the readlink() function.
708 ACE_LACKS_READV                         Platform doesn't define readv,
709                                         so use our own
710 ACE_LACKS_RENAME                        Platform lacks rename().
711 ACE_LACKS_RLIMIT                        Platform/compiler lacks
712                                         {get,set}rlimit() function
713                                         (e.g., VxWorks)
714 ACE_LACKS_READDIR_R                     Platform uses ACE_HAS_DIRENT
715                                         but does not have readdir_r
716                                         ().
717 ACE_LACKS_REALPATH                      Platform/compiler lacks
718                                         realpath () function (e.g.,
719                                         LynxOS)
720 ACE_LACKS_RECVMSG                       Platform lacks recvmsg()
721                                         (e.g., Linux)
722 ACE_LACKS_RWLOCK_T                      Platform lacks readers/writer
723                                         locks.
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
728                                         VxWorks)
729 ACE_LACKS_SCANDIR_PROTOTYPE             Platform/compiler lacks
730                                         scandir() prototype
731                                         (e.g., LynxOS)
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()
738                                         (e.g., HP/UX 10.x)
739 ACE_LACKS_SETSCHED                      Platform lacks
740                                         pthread_attr_setsched()
741                                         (e.g. MVS)
742 ACE_LACKS_SIGACTION                     Platform lacks struct
743                                         sigaction (e.g., Win32)
744 ACE_LACKS_SIGSET                        Platform lacks signal sets
745                                         (e.g., Win32)
746 ACE_LACKS_STRPTIME                      Platform/compiler lacks the strptime()
747                                         function.
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
753                                         swab () function.
754 ACE_LACKS_SYS_MSG_H                     Platform lacks sys/msg.h
755                                         (e.g., VxWorks)
756 ACE_LACKS_SYS_PARAM_H                   Platform lacks <sys/param.h>
757                                         (e.g., MVS)
758 ACE_LACKS_SENDMSG                       Platform lacks sendmsg()
759                                         (e.g., Linux)
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
766                                         VxWorks)
767 ACE_LACKS_SIGINFO_H                     Platform lacks the siginfo.h
768                                         include file (e.g., MVS)
769 ACE_LACKS_SOCKETPAIR                    Platform lacks the
770                                         socketpair() cal
771 ACE_LACKS_STRCASECMP                    Compiler/platform lacks
772                                         strcasecmp() (e.g., DG/UX,
773                                         UNIXWARE, VXWORKS)
774 ACE_LACKS_STRRECVFD                     Platform doesn't define struct
775                                         strrecvfd.
776 ACE_LACKS_SYSCALL                       Platform doesn't have
777                                         syscall() prototype
778 ACE_LACKS_T_ERRNO                       Header files lack t_errno for
779                                         TLI
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
790                                         struct timespec.
791 ACE_LACKS_TRUNCATE                      Platform doesn't have truncate()
792                                         (e.g., vxworks)
793 ACE_LACKS_UCONTEXT_H                    Platform lacks the ucontext.h
794                                         file
795 ACE_LACKS_UMASK                         Platform lacks umask function
796 ACE_LACKS_UNBUFFERED_STREAMBUF          Platform lacks streambuf
797                                         "unbuffered ()".
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
801                                         domain sockets
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
809                                         GetProcessTimes().
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
815                                         <sched.h>
816                                         to get thread scheduling
817                                         defs.
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
826                                         separate type, then
827                                         ACE_WString doesn't have a
828                                         constructor that understands
829                                         an ACE_USHORT16 string.  So
830                                         this macro enables
831                                         one. (mostly used my ACE Name
832                                         Space).
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
841                                         them at all.
842                                         Both QNX/RTP and LynxOS suffer from
843                                         this problem.
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.
857 Macro                                   Description
858 -----                                   -----------
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
863                                         svc.conf format.
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
873                                         svc.conf format.
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....
883 ACE_HAS_ALLOCA:
884 ---------------
886   Used in:
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
893   In solaris:
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 ----------------------------
903   Used in:
904      libsrc/Service_Configurator/Service_Repository.i
905      libsrc/Service_Configurator/Parse_Node.i
906      include/Parse_Node.i
907      include/Service_Repository.i
909   In solaris:
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 ---------------------
921   Used In:
922      libsrc/Misc/High_Res_Timer.h
923      libsrc/Misc/High_Res_Timer.C
924      include/High_Res_Timer.h
926   In Solaris,
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.
933   Notes:
934      TBA
937 ACE_LACKS_T_ERRNO:
938 -------------------
940   Used In:
941      ace/OS.h
943   Notes:
944      if set, adds:
945      extern int t_errno;
948 ACE_HAS_POSIX_NONBLOCK:
949 -----------------------
951   Used in:
952      ace/OS.h
954   Notes:
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
963 ACE_HAS_PROC_FS:
964 ----------------
966   Used in:
967      ace/OS.h
968      libsrc/Misc/Profile_Timer.i
970   Notes:
971      if set, includes <sys/procfs.h>
972      the PIOCUSAGE define is used in Profile_Timer.
974   Solaris:
975      procfs.h defines things for the prpsinfo structure (basically to
976      do a "ps" from inside a program).
979 ACE_HAS_PRUSAGE_T:
980 ------------------
982   Used in:
983      libsrc/Misc/Profile_Timer.h
984      libsrc/Misc/Profile_Timer.C
986   Notes:
987      If defined, declares the Profile_Timer class that does start(),
988      stop() and basically gets real_time, user_time, system_time for
989      an interval.
990      This stuff is highly non-portable.
992 ACE_HAS_SEMUN:
993 --------------
995   Used in:
996      libsrc/Semaphores/Semaphore_Simple.h
998   Notes:
999      if not defined, defines semun as:
1000      union semun {
1001            int          val;    /* value for SETVAL */
1002            struct semid_ds      *buf;   /* buffer for IPC_STAT & IPC_SET */
1003            ushort               *array; /* array for GETALL & SETALL */
1004      };
1007 ACE_HAS_SIG_ATOMIC_T:
1008 ---------------------
1010   Used in:
1011      ace/OS.h
1013   Notes:
1014      if not defined, does a:
1015      typedef int sig_atomic_t;
1016      This is used in the Reactor and service configurator.
1018 ACE_HAS_SSIZE_T:
1019 ----------------
1021   Used in:
1022      ace/OS.h
1024   Notes:
1025      if not defined, does a
1026      typedef int ssize_t;
1027      used mostly in IPC_SAP.  (don't confuse with size_t).
1029 ACE_HAS_STRBUF_T:
1030 -----------------
1032   Used in:
1033      include/Str_Buf.h
1035   Notes:
1036      if not defined, declares the strbuf structure as:
1037      struct strbuf
1038      {
1039        int      maxlen;                 /* no. of bytes in buffer */
1040        int      len;                    /* no. of bytes returned */
1041        void     *buf;                   /* pointer to data */
1042      };
1044   Solaris:
1045      defined in /usr/include/sys/stropts.h
1046      Sys V.4 Streams.
1047      uses strbuf as parameter to putmsg, putpmsg:
1048      int putmsg(int fildes, const struct strbuf *ctlptr,
1049           const struct strbuf *dataptr, int flags);
1052 ACE_HAS_STREAMS:
1053 ----------------
1055   Used In:
1056      ace/OS.h
1057      libsrc/IPC_SAP/SOCK_SAP/LSOCK.C
1059   Notes:
1060      if defined, includes <stropts.h>
1063 ACE_HAS_STREAM_PIPES:
1064 ---------------------
1066   Used in:
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
1080   Notes:
1081      if not set, won't be able to use the SPIPE class (IPC_SAP) with
1082      rendezvous handles.
1085 ACE_HAS_SVR4_DYNAMIC_LINKING:
1086 -----------------------------
1088   Used in:
1089      ace/OS.h
1090      tests/Service_Configurator/CCM_App.C
1092   Notes:
1093      if defined, includes <dlfcn.h>
1094      with dlopen(), dlsym(), etc..
1097 ACE_HAS_SVR4_GETTIMEOFDAY:
1098 --------------------------
1100   Used in:
1101      ace/OS.h
1102      libsrc/Reactor/Timer_Queue.i
1104   Notes:
1105      has to do with gettimeofday ().
1107   Solaris:
1108      gettimeofday (struct timeval *tp)
1111 ACE_HAS_POLL:
1112 ------------
1113   Used in:
1114      ace/OS.h
1116   Notes:
1117      #if defined (ACE_HAS_POLL)
1118      #include /**/ <poll.h>
1119      #endif /* ACE_HAS_POLL */
1121 ACE_HAS_SVR4_SIGNAL_T:
1122 ----------------------
1124   Used in:
1125      ace/OS.h
1127   Notes:
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);
1134      #else
1135      #define SignalHandler SIG_PF
1136      typedef void (*SignalHandlerV)(...);
1137      #endif /* ACE_HAS_SVR4_SIGNAL_T */
1140 ACE_HAS_SYS_FILIO_H:
1141 --------------------
1143   Used in:
1144      ace/OS.h
1146   Notes:
1147      if not defined, includes <sys/filio.h>.
1148      didn't find any reference to anything in this file in the ACE code.
1150   Solaris:
1151      filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
1152      for FIOLFS,.. solaris has this to say:
1153      /*
1154       * ioctl's for Online: DiskSuite.
1155       * WARNING - the support for these ioctls may be withdrawn
1156       * in the future OS releases.
1157       */
1160 ACE_HAS_TEMPLATE_TYPEDEFS:
1161 --------------------------
1163   Used in:
1164      libsrc/ASX/*.[Chi]
1166   Notes:
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.
1171 ACE_HAS_THREADS:
1172 ----------------
1174   Used in:
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
1180      libsrc/ASX/STREAM.C
1181      libsrc/ASX/Queue.C
1182      libsrc/ASX/Module.C
1183      libsrc/ASX/Stream_Modules.C
1184      libsrc/ASX/Multiplexor.C
1185      libsrc/ASX/Message_List.C
1186      include/Message_List.h
1187      include/Module.h
1188      include/Multiplexor.h
1189      include/Queue.h
1190      include/STREAM.h
1191      include/Stream_Modules.h
1192      include/Service_Types.h
1193      include/Thread_Spawn.h
1194      include/Synch.h
1195      include/Thr_Manager.h
1197   Notes:
1198      We use Message_List.h even in a non-threaded environment.
1199      our XOMessageList.h does this by #ifdefs around Threaded things.
1202 ACE_HAS_TIUSER_H:
1203 -----------------
1205   Used in:
1206      ace/OS.h
1208   Notes:
1209      if set, includes <tiuser.h>
1211   Solaris:
1212      in conjunction with t_bind, t_accept, etc.. transport layer.
1215 ACE_USES_GPROF:
1216 ----------------------------
1217   Used in:
1218     ace/Base_Thread_Adapter.h
1219     ace/Base_Thread_Adapter.inl
1220     ace/Base_Thread_Adapter.cpp
1222   Notes:
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 ----------------------------
1229   Used in:
1230     ace/QtReactor.cpp:
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.
1240  Linux:
1241    It seems linux::qt does not queue pending events. Do not define
1242    this switch.
1243  Windows:
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
1247    application then.