summaryrefslogtreecommitdiff
path: root/ACE/ace/README
blob: 6fabe1a489cb9c2b212a6557fd73d042420761bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
ACE Portability Macros
----------------------

The following describes the meaning of the C++ compiler macros that
can be set in the config*.h file.  When you port ACE to a new platform
and/or C++ compiler, make sure that you check to see which of these
need to be defined.  It's helpful to check the various config*.h files
in this directory to see what's already been defined.  If you need to
add new macros, please send them to me and I'll add them to this file.

Eventually, most of this information should be auto-discovered via GNU
autoconf, which is currently available in the ACE distribution.

Macro                                   Description
-----                                   -----------

ACE_HAS_DUMP                            Used to enable the dump()
                                        method bodies.  If not
                                        defined, the bodies are ifdef
                                        out in order to reduce
                                        footprint.  By default, it is
                                        not defined.
ACE_CAST_CONST                          Used to work around broken
                                        SunCC ANSI casts that require
                                        an extra const.
ACE_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES
                                        Win32 only.  Users want to use
                                        a predefined security
                                        attributes defined in
                                        ACE_OS::default_win32_security_attributes
                                        as the default security
                                        object.
ACE_DISABLE_MKTEMP                      Disable availability of
                                        ACE_OS::mktemp().
ACE_DISABLE_TEMPNAM                     Disable availability of
                                        ACE_OS::tempnam().
ACE_DISABLE_DEBUG_DLL_CHECK             Define this if you don't want
                                        debug version ACE search for
                                        debug version DLLs first
                                        before looking for the DLL
                                        names specified.
ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
                                        Application will allocate its
                                        own object manager.  This
                                        implicitly defines
                                        ACE_HAS_NONSTATIC_OBJECT_MANAGER.
                                        Usually used with MFC
                                        applications.
ACE_GETNAME_RETURNS_RANDOM_SIN_ZERO     Platform does not initialize
                                        sockaddr_in::sin_zero field in
                                        calls to getpeername() and
                                        getsockname().  As a result,
                                        memcmp()-based equality
                                        comparison can fail despite
                                        the fact two sockaddr_in
                                        instances refer to the same
                                        addr characteristics.
ACE_MAIN                                Renames "main (int, char *[])",
                                        for platforms such as g++/VxWorks
                                        that don't allow "main".  Requires
                                        the use of
                                        ACE_HAS_NONSTATIC_OBJECT_MANAGER.
ACE_MKDIR_LACKS_MODE                    This platform has a mkdir function with
                                        a mode argument
ACE_MT_SAFE                             Compile using multi-thread libraries
ACE_NDEBUG                              Turns off debugging features
ACE_NLOGGING                            Turns off the LM_DEBUG and
                                        LM_ERROR logging macros...
ACE_NTRACE                              Turns off the tracing feature when = 1.
ACE_HAS_TRACE                           Defined when ACE_NTRACE=0 to
                                        help support tracing.  Can
                                        also be defined by users who
                                        implement their own tracing
                                        macros based on
                                        ACE_TRACE_IMPL.  Not defining
                                        it helps reduce footprint by
                                        not requiring applications to
                                        link in Trace.o.
ACE_PAGE_SIZE                           Defines the page size of the
                                        system (not used on Win32 or
                                        with ACE_HAS_GETPAGESIZE).
ACE_TEMPLATES_REQUIRE_SOURCE            Compiler's template mechanim
                                        must see source code (i.e.,
                                        .cpp files).  This is used for
                                        GNU G++.
ACE_TIMEPROBE_ASSERTS_FIXED_SIZE        If enabled then ACE_Timeprobe_Ex<>::timeprobe()
                                        will assert if the end of the
                                        buffer is reached.  If disabled, the
                                        counter wraps around to start
                                        at the beginning of the buffer.
ACE_TIMER_SKEW                          If a timed ::select () can return
                                        early, then ACE_TIMER_SKEW is the
                                        maximum adjustment, in microseconds,
                                        that ACE_Timer_Queue uses to
                                        compensate for the early return.
ACE_TLI_TCP_DEVICE                      Device the platform uses for TCP on
                                        TLI.  Only needed if not /dev/tcp.
ACE_USE_POLL                            The OS platform supports the
                                        poll() event demultiplexor
ACE_USES_ASM_SYMBOL_IN_DLSYM            Platform uses assembly symbols
                                        instead of C symbols in
                                        dlsym()
ACE_USES_STATIC_MFC                     When linking MFC as a static library is desired
ACE_USES_EXPLICIT_STD_NAMESPACE         Set this when ::fclose doesn't
                                        work and you have to
                                        explicitly specify the std
                                        namespace.   This is needed
                                        with the Borland 6 and earlier
                                        compilers.
ACE_USES_GPROF                          ACE calls getitimer before spawning
                                        a new thread and setitimer
                                        after spawning the thread in
                                        order to overcome the problems
                                        of gprof with multithreaded
                                        applications. It uses the idea from
                                        http://sam.zoy.org/writings/programming/gprof.html
ACE_USES_FIFO_SEM                       Directs ACE to use FIFO based semaphores on
                                        platforms that support this (not having full
                                        POSIX semaphore support, supporting mkfifo, select
                                        and fcntl).
ACE_WSOCK_VERSION                       A parameter list indicating
                                        the version of WinSock (e.g.,
                                        "1, 1" is version 1.1).
ACE_HAS_AIO_CALLS                       Platform supports POSIX aio* calls.
                                        Corresponds to _POSIX_ASYNCHRONOUS_IO
                                        constant in <unistd.h>.
ACE_HAS_ALT_CUSERID                     Use ACE's alternate cuserid()
                                        implementation since a system
                                        cuserid() may not exist, or it
                                        is not desirable to use it.
                                        The implementation requires
                                        ACE_LACKS_PWD_FUNCTIONS to be
                                        undefined and that the
                                        geteuid() system call exists.
ACE_DEFAULT_THREAD_KEYS                 Number of TSS keys, with
                                        ACE_HAS_TSS_EMULATION _only_.
                                        Defaults to 64.
ACE_DEFAULT_THREAD_STACKSIZE            Default stack size specified for the
                                        ACE thread spawning methods. Defaults
                                        to 0, which defers to OS defaults.
ACE_DEFAULT_LD_SEARCH_PATH              Specify the platform default search
                                        paths.  This macro should only be
                                        defined on platforms that don't
                                        support environment variables at all
ACE_THREADS_DONT_INHERIT_LOG_MSG        Specify this if you don't want
                                        threads to inherit parent
                                        thread's ACE_Log_Msg
                                        properties.
ACE_THREAD_MANAGER_USES_SAFE_SPAWN      Disable the "check before lock" feature
                                        in ACE_Thread_Manager.  Defining this
                                        macro avoids a potential race condition
                                        on platforms with aggressive read/write
                                        reordering.
ACE_HAS_CPU_SET_T                       Platform delivers cpu_set_t.
ACE_HAS_PRIOCNTL                        OS has priocntl (2).
ACE_HAS_RECURSIVE_MUTEXES               Mutexes are inherently recursive
                                        (e.g., Win32)
ACE_HAS_NONRECURSIVE_MUTEXES            In addition to recursive mutexes,
                                        platform has non-recursive ones also.
ACE_HAS_RECV_TIMEDWAIT                  Platform has the MIT pthreads
                                        APIs for
ACE_HAS_RLIMIT_RESOURCE_ENUM            Platform has enum instead of
                                        int for first argument to
                                        ::{get,set}rlimit ().  The
                                        value of this macro is the
                                        enum definition, e.g., enum
                                        __rlimit_resource, for Linux
                                        glibc 2.0.
ACE_HAS_RUSAGE_WHO_ENUM                 Platform has enum instead of
                                        int for first argument to
                                        ::getrusage ().  The value of
                                        this macro is the enum
                                        definition, e.g., enum
                                        __rusage_who, for Linux glibc
                                        2.0.
ACE_HAS_SCANDIR                         Platform has a native scandir()
                                        function. Without any other scandir-
                                        related settings, it's assumed that
                                        the selector and comparator functions
                                        accept const ACE_DIRENT pointers.
ACE_SCANDIR_CMP_USES_VOIDPTR            The OS's scandir() comparator function
                                        is int (*compare)(void*, void*).
ACE_SCANDIR_CMP_USES_CONST_VOIDPTR      The OS's scandir() comparator function
                                        is int (*compare)(const void*,
                                                          const void*).
ACE_HAS_STDARG_THR_DEST                 Platform has void (*)(...)
                                        prototype for
                                        pthread_key_create()
                                        destructor (e.g., LynxOS).
ACE_HAS_WIN32_STRUCTURED_EXCEPTIONS     Platform/compiler supports
                                        Win32 structural exceptions
ACE_HAS_4_4BSD_SENDMSG_RECVMSG          Platform has BSD 4.4
                                        sendmsg()/recvmsg() APIs.
ACE_HAS_P_READ_WRITE                    Platform has pread() and
                                        pwrite() support
ACE_HAS_ALLOCA                          Compiler/platform supports
                                        alloca()
ACE_HAS_ALLOCA_H                        Compiler/platform has
                                        <alloca.h>
ACE_HAS_AUTOMATIC_INIT_FINI             Compiler/platform correctly
                                        calls init()/fini() for shared
                                        libraries
ACE_HAS_BIG_FD_SET                      Compiler/platform has typedef
                                        u_long fdmask (e.g., Linux).
ACE_HAS_BROKEN_ACCEPT_ADDR              Platform can't correctly deal
                                        with a NULL addr to accept()
                                        (e.g, VxWorks < 6.9).
ACE_HAS_BROKEN_DGRAM_SENDV              Platform sendv() does not work
                                        properly with datagrams,
                                        i.e. it fails when the iovec
                                        size is IOV_MAX.
ACE_HAS_BROKEN_MAP_FAILED               Platform doesn't cast MAP_FAILED
                                        to a void *.
ACE_HAS_BROKEN_MSG_H                    Platform headers don't support
                                        <msg.h> prototypes
ACE_HAS_BROKEN_MMAP_H                   HP/UX does not wrap the
                                        mmap(2) header files with
                                        extern "C".
ACE_HAS_BROKEN_NESTED_TEMPLATES         MSVC has trouble with defining
                                        STL containers for nested
                                        structs and classes
ACE_HAS_BROKEN_T_ERROR                  Compiler/platform has the wrong
                                        prototype for t_error(), i.e.,
                                        t_error(char *) rather than
                                        t_error(const char *).
ACE_HAS_BYTESEX_H                       Platform has <bytesex.h>.
ACE_HAS_CANCEL_IO                       Platform supports the Win32
                                        CancelIO() function (WinNT 4.0
                                        and beyond).
ACE_HAS_CHARPTR_DL                      OS/platform uses char * for
                                        dlopen/dlsym args, rather than
                                        const char *.
ACE_HAS_CHARPTR_SOCKOPT                 OS/platform uses char * for
                                        sockopt, rather than const
                                        char *
ACE_HAS_CLOCK_GETTIME                   Platform supports POSIX.1b
                                        clock_gettime () at least for clock-id CLOCK_REALTIME
ACE_HAS_CLOCK_GETTIME_MONOTONIC         Platform supports POSIX.1b
                                        clock_gettime () with the clock-id CLOCK_MONOTONIC
ACE_HAS_CLOCK_SETTIME                   Platform supports POSIX.1b
                                        clock_settime ()
ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES    Prototypes for both signal()
                                        and struct sigaction are
                                        consistent.
ACE_HAS_DIRENT                          Compiler/platform has Dirent
                                        iterator functions
ACE_HAS_DLL                             Build ACE using the frigging
                                        PC DLL nonsense...
ACE_HAS_EBCDIC                          Compile in the ACE code set classes
                                        that support EBCDIC.
ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT  When a base-class is a
                                        specialization of a class template
                                        then this class template must be
                                        explicitly exported
ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION  For the GCC compiler
                                        on VxWorks we have to
                                        explicitly instantiate static template
                                        members else we get multiple instances
                                        of the same static.
ACE_HAS_GETPAGESIZE                     Platform supports
                                        getpagesize() call (otherwise,
                                        ACE_PAGE_SIZE must be defined,
                                        except on Win32)
ACE_HAS_GETRUSAGE                       Platform supports the
                                        getrusage() system call.
ACE_HAS_GETRUSAGE_PROTOTYPE             Platform has a getrusage ()
                                        prototype in sys/resource.h
                                        that differs from the one in
                                        ace/OS.i.
ACE_HAS_GPERF                           The GPERF utility is compiled
                                        for this platform
ACE_HAS_GETIFADDRS                      This platform has ifaddrs.h and
                                        the getifaddrs() function.  This
                                        is used in preference to
                                        the SIOCGIFCONF ioctl call, since
                                        it is much simpler and supports
                                        IPv6 and non-IP interfaces better.
ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT Optimize
                                        ACE_Handle_Set::count_bits for
                                        select() operations (common
                                        case)
ACE_HAS_LLSEEK                          Platform supports llseek.
ACE_HAS_HI_RES_TIMER                    Compiler/platform supports
                                        SunOS high resolution timers
ACE_HAS_IDTYPE_T                        Compiler/platform supports
                                        idtype_t.
ACE_HAS_INLINED_OSCALLS                 Inline all the static class OS
                                        methods to remove call
                                        overhead
ACE_HAS_INT_SWAB                        Platform's swab function has length
                                        argument of type int, not ssize_t.
ACE_HAS_IP_MULTICAST                    Platform supports IP multicast
ACE_HAS_IPV6                            Platform supports IPv6.
ACE_HAS_BROKEN_GETHOSTBYADDR_V4MAPPED   gethostbyaddr does not handle
                                        IPv6-mapped-IPv4 addresses
ACE_USES_IPV4_IPV6_MIGRATION            Enable IPv6 support in ACE on
                                        platforms that don't have IPv6
                                        turned on by default.
ACE_HAS_NONSTATIC_OBJECT_MANAGER        Causes the ACE_Object_Manager
                                        instance to be created in main
                                        (int, char *[]), instead of as
                                        a static (global) instance.
ACE_HAS_THR_KEYDELETE                   Platform supports
                                        thr_keydelete (e.g,. UNIXWARE)
ACE_HAS_THR_MINSTACK                    Platform calls thr_minstack()
                                        rather than thr_min_stack()
                                        (e.g., Tandem).
ACE_HAS_LIMITED_RUSAGE_T                The rusage_t structure has
                                        only two fields.
ACE_HAS_LINUX_NPTL                      Linux platform (with kernel >= 2.6.x)
                                        with GLibc including new NPTL (Native
                                        POSIX Thread Library).
                                        This triggers extended POSIX checks
                                        since the NPTL library is (almost) fully
                                        POSIX compliant.
ACE_HAS_LOG_MSG_NT_EVENT_LOG            Platform supports Windows NT event
                                        log so we can create an
                                        ACE_Log_Msg_Backend to log to it.
ACE_HAS_LONG_MAP_FAILED                 Platform defines MAP_FAILED as
                                        a long constant.
ACE_HAS_MALLOC_STATS                    Enabled malloc statistics
                                        collection.
ACE_HAS_MEMCHR                          Use native implementation of memchr.
ACE_HAS_MINIMAL_ACE_OS                  Disables some #includes in ace/OS.*.
ACE_HAS_MFC                             Platform supports Microsoft
                                        Foundation Classes
ACE_HAS_MSG                             Platform supports recvmsg and
                                        sendmsg
ACE_HAS_MT_SAFE_MKTIME                  Platform supports MT safe
                                        mktime() call (do any of
                                        them?)
ACE_HAS_MUTEX_TIMEOUTS                  Compiler supports timed mutex
                                        acquisitions
                                        (e.g. pthread_mutex_timedlock()).
ACE_HAS_NONCONST_CHDIR                  Platform uses non-const char *
                                        in call to chdir
ACE_HAS_NONCONST_CLOCK_SETTIME          Platform uses non-const
                                        struct timespec * in call to
                                        clock_settime
ACE_HAS_NONCONST_OPENDIR                Platform uses non-const char *
                                        in call to opendir
ACE_HAS_NONCONST_UNLINK                 Platform uses non-const char *
                                        in call to unlink
ACE_HAS_NONCONST_GETBY                  Platform uses non-const char *
                                        in calls to gethostbyaddr,
                                        gethostbyname, getservbyname
ACE_HAS_NONCONST_MSGSND                 Platform has a non-const
                                        parameter to msgsend().
ACE_HAS_NONCONST_READV                  Platform omits const qualifier from
                                        iovec parameter in readv() prototype.
ACE_HAS_NONCONST_SELECT_TIMEVAL         Platform's select() uses
                                        non-const timeval* (only found
                                        on Linux right now)
ACE_HAS_NONCONST_SENDMSG                Platform omits const qualifier
                                        from msghdr parameter in sendmsg()
                                        prototype.
ACE_HAS_NONCONST_SETRLIMIT              Platform omits const qualifier
                                        from rlimit parameter in setrlimit()
                                        prototype.
ACE_HAS_NONCONST_STAT                   Platform's stat function has non const
                                        name argument
ACE_HAS_NONCONST_SWAB                   Platform's swab function has non
                                        const src argument
ACE_HAS_NONCONST_WRITEV                 Platform omits const qualifier from
                                        iovec parameter in writev() prototype.
ACE_HAS_OLD_MALLOC                      Compiler/platform uses old
                                        malloc()/free() prototypes
                                        (ugh)
ACE_HAS_ONLY_SCHED_FIFO                 Platform, e.g., HP NonStop OSS,
                                        only supports SCHED_FIFO
                                        POSIX scheduling policy.
ACE_HAS_ONLY_SCHED_OTHER                Platform, e.g., Solaris 2.5,
                                        only supports SCHED_OTHER
                                        POSIX scheduling policy.
ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R   Uses ctime_r & asctime_r with
                                        only two parameters
                                        vs. three.
ACE_HAS_OSF_TIMOD_H                     Platform supports the OSF TLI
                                        timod STREAMS module
ACE_HAS_3_PARAM_WCSTOK                  Platform has 3-parameter version
                                        of wcstok(), which was added in
                                        1994 in the ISO C standard Normative
                                        Addendum 1.  Other standards like XPG4
                                        define a 2 parameter wcstok().
ACE_HAS_PENTIUM                         Platform is an Intel Pentium
                                        microprocessor.
ACE_HAS_POLL                            Platform contains <poll.h>
ACE_HAS_POSITION_INDEPENDENT_POINTERS   Platform supports
                                        "position-independent" features
                                        provided by ACE_Based_Pointer<>.
ACE_HAS_POSIX_MESSAGE_PASSING           Platform supports POSIX message queues.
                                        Corresponds to _POSIX_MESSAGE_PASSING
                                        constant in <unistd.h>.
ACE_HAS_POSIX_NONBLOCK                  Platform supports POSIX
                                        O_NONBLOCK semantics
ACE_HAS_POSIX_REALTIME_SIGNALS          Platform supports POSIX RT signals.
                                        Corresponds to _POSIX_REALTIME_SIGNALS
                                        constant in <unistd.h>.
ACE_HAS_POSIX_SEM                       Platform supports POSIX
                                        real-time semaphores (e.g.,
                                        VxWorks and Solaris).  Corresponds
                                        to _POSIX_SEMAPHORES constant
                                        in <unistd.h>
ACE_HAS_POSIX_SEM_TIMEOUT               Platform supports timed wait operation
                                        on POSIX realtime semaphores.
ACE_HAS_POSIX_TIME                      Platform supports the POSIX
                                        struct timespec type
ACE_HAS_PROC_FS                         Platform supports the /proc
                                        file system and defines tid_t
                                        in <sys/procfs.h>
ACE_HAS_POWERPC_TIMER                   Platform supports PowerPC
                                        time-base register.
ACE_HAS_PRUSAGE_T                       Platform supports the
                                        prusage_t struct
ACE_HAS_PTHREADS                        Platform supports POSIX
                                        Pthreads, of one form or
                                        another.  This macro says the
                                        platform has a pthreads
                                        variety - should also define
                                        one of the below to say which
                                        one.  Also may need some
                                        ACE_HAS_... thing for
                                        extensions.
ACE_HAS_PTHREADS_UNIX98_EXT             Platform has the UNIX98 extensions to
                                        Pthreads (rwlocks)
ACE_HAS_PTHREAD_ATTR_SETCREATESUSPEND_NP  Platform has
                                        pthread_attr_setcreatesuspend_np().
ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP     Platform has pthread_condattr_setkind_np().
ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP    Platform has
                                        pthread_mutexattr_setkind_np().
ACE_HAS_PTHREAD_GETCONCURRENCY          Platform has pthread_getconcurrency().
ACE_HAS_PTHREAD_SETCONCURRENCY          Platform has pthread_setconcurrency().
ACE_HAS_PTHREAD_PROCESS_ENUM            pthread.h declares an enum with
                                        PTHREAD_PROCESS_PRIVATE and
                                        PTHREAD_PROCESS_SHARED values.
ACE_HAS_PTHREAD_SETSTACK                Platform has pthread_attr_setstack().
ACE_HAS_PTHREAD_NP_H                    Platform has <pthread_np.h>  FreeBSD
                                        declares non-portable (*_np) pthread
                                        functions in this header.
ACE_HAS_PURIFY                          Purify'ing.  Set by wrapper_macros.GNU.
ACE_HAS_QUANTIFY                        Quantify'ing.  Set by wrapper_macros.GNU.
ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS    Platform will recurse
                                        infinitely on thread exits
                                        from TSS cleanup routines
ACE_HAS_REENTRANT_FUNCTIONS             Platform supports reentrant
                                        functions (i.e., all the POSIX
                                        *_r functions).
ACE_HAS_XPG4_MULTIBYTE_CHAR             Platform has support for
                                        multi-byte character support
                                        compliant with the XPG4
                                        Worldwide Portability
                                        Interface wide-character
                                        classification.
ACE_HAS_REGEX                           Platform supports the POSIX
                                        regular expression library
ACE_HAS_SELECT_H                        Platform has special header for select().
ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL For Win32: Use Select_Reactor
                                        as default implementation of
                                        Reactor instead of
                                        WFMO_Reactor.
ACE_HAS_SEMUN                           Compiler/platform defines a
                                        union semun for SysV shared
                                        memory
ACE_HAS_SET_T_ERRNO                     Platform has a function to set
                                        t_errno (e.g., Tandem).
ACE_HAS_SIGACTION_CONSTP2               Platform's sigaction() function takes
                                        const sigaction* as 2nd parameter.
ACE_HAS_SIGINFO_T                       Platform supports SVR4
                                        extended signals
ACE_HAS_SIGSUSPEND                      Platform supports sigsuspend()
ACE_HAS_SIGISMEMBER_BUG                 Platform has bug with
                                        sigismember() (HP/UX 11).
ACE_HAS_SIGNAL_OBJECT_AND_WAIT          Platform supports the Win32
                                        SignalObjectAndWait() function
                                        (WinNT 4.0 and beyond).
ACE_HAS_SIGWAIT                         Platform/compiler has the
                                        sigwait(2) prototype
ACE_HAS_SIG_ATOMIC_T                    Compiler/platform defines the
                                        sig_atomic_t typedef
ACE_HAS_SIG_C_FUNC                      Compiler requires extern "C"
                                        functions for signals.
ACE_HAS_SOCKADDR_IN_SIN_LEN             Platform has sin_len member in struct
                                        sockaddr_in.
ACE_HAS_SOCKADDR_IN6_SIN_LEN            Platform has sin6_len member in struct
                                        sockaddr_in6.
ACE_HAS_SOCKADDR_MSG_NAME               Platform requires (struct
                                        sockaddr *) for msg_name field
                                        of struct msghdr.
ACE_HAS_SOCKLEN_T                       Platform provides socklen_t
                                        type, such as Linux with
                                        glibc2.
ACE_HAS_SOCK_BUF_SIZE_MAX               Platform limits the maximum socket
                                        message size.
ACE_HAS_SPARCWORKS_401_SIGNALS          Compiler has brain-damaged
                                        SPARCwork SunOS 4.x signal
                                        prototype...
ACE_HAS_SSIZE_T                         Compiler supports the ssize_t
                                        typedef
ACE_HAS_STHREADS                        Platform supports Solaris
                                        threads
ACE_HAS_STRBUF_T                        Compiler/platform supports
                                        struct strbuf
ACE_HAS_STRDUP_EMULATION                Use ACE's strdup() emulation (even
                                        if platform has a native strdup()).
                                        This is useful if you need control
                                        over what memory allocator is used.
ACE_HAS_WCSDUP_EMULATION                Use ACE's wcsdup() emulation (even
                                        if platform has a native wcsdup()).
                                        This is useful if you need control
                                        over what memory allocator is used.
ACE_HAS_STRNLEN                         Platform supports strnlen(3).
ACE_HAS_STREAMS                         Platform supports STREAMS
ACE_HAS_STREAM_PIPES                    Platform supports STREAM pipes
ACE_HAS_STRICT                          Use the STRICT compilation mode on Win32.
ACE_HAS_STRUCT_NETDB_DATA               Compiler/platform has strange
                                        hostent API for socket *_r()
                                        calls
ACE_HAS_SUNOS4_SIGNAL_T                 Compiler has horrible SunOS
                                        4.x signal handlers...
ACE_HAS_SVR4_DYNAMIC_LINKING            Compiler/platform supports
                                        SVR4 dynamic linking semantics
ACE_HAS_SVR4_GETTIMEOFDAY               Compiler/platform supports
                                        SVR4 gettimeofday() prototype
ACE_HAS_SVR4_SIGNAL_T                   Compiler/platform supports
                                        SVR4 signal typedef
ACE_HAS_SVR4_TLI                        Compiler/platform supports
                                        SVR4 TLI; that is, TLI with extensions
                                        like t_getname(). This is sometimes
                                        used as a pseudonym for TLI on SunOS4.
                                        This is a modifier to ACE_HAS_TLI and
                                        isn't used if ACE_HAS_XTI is set.
ACE_HAS_SYSCALL_GETRUSAGE               HP/UX has an undefined syscall
                                        for GETRUSAGE...
ACE_HAS_SYSENT_H                        Platform provides <sysent.h>
                                        header
ACE_HAS_SYSV_SYSINFO                    Platform supports system
                                        configuration information
ACE_HAS_SYSV_IPC                        Platform supports System V IPC
                                        (most versions of UNIX, but
                                        not Win32)
ACE_HAS_SYS_FILIO_H                     Platform provides
                                        <sys/filio.h> header
ACE_HAS_SYS_LOADAVG_H                   Compiler/platform contains the
                                        <sys/loadavg.h> file.
ACE_HAS_SYS_PSTAT_H                     Compiler/platform contains the
                                        <sys/pstat.h> file.
ACE_HAS_SYS_SOCKIO_H                    Compiler/platform provides the
                                        sockio.h file
ACE_HAS_SYS_SYSCALL_H                   Compiler/platform contains the
                                        <sys/syscall.h> file.
ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA   Compiler's template
                                        instantiation mechanism
                                        supports the use of "#pragma
                                        instantiate".  Edison Design
                                        Group compilers, e.g., SGI C++
                                        and Green Hills 1.8.8 and
                                        later, support this.
ACE_HAS_TEMPLATE_TYPEDEFS               Compiler implements templates
                                        that support typedefs inside
                                        of classes used as formal
                                        arguments to a template
                                        class.
ACE_HAS_TERMIO                          Platform has terminal ioctl
                                        flags like TCGETS and TCSETS and
                                        termio struct.
ACE_HAS_TERMIOS                         Platform has POSIX terminal
                                        interface and termios struct.
ACE_HAS_LAZY_MAP_MANAGER                ACE supports lazy Map Managers
                                        that allow deletion of entries
                                        during active iteration.
ACE_HAS_THREADS                         Platform supports threads
ACE_HAS_THREAD_SAFE_ACCEPT              Platform allows multiple
                                        threads to call accept() on
                                        the same port (e.g., WinNT).
ACE_HAS_THREAD_SELF                     Platform has thread_self()
                                        rather than pthread_self()
                                        (e.g., DCETHREADS)
ACE_HAS_THREAD_SPECIFIC_STORAGE         Compiler/platform has
                                        thread-specific storage
ACE_HAS_THR_C_DEST                      The pthread_keycreate()
                                        routine *must* take extern C
                                        functions.
ACE_HAS_THR_C_FUNC                      The pthread_create() routine
                                        *must* take extern C
                                        functions.
ACE_HAS_TIMEZONE                        Platform/compiler supports
                                        global "timezone" variable.
ACE_HAS_TIMEZONE_GETTIMEOFDAY           Platform/compiler supports
                                        timezone * as second parameter
                                        to gettimeofday()
ACE_HAS_TIMOD_H                         Platform supports TLI timod
                                        STREAMS module
ACE_HAS_TIUSER_H                        Platform provides TLI tiuser.h
                                        header file.
ACE_HAS_TLI                             Platform supports TLI.  Also
                                        see ACE_TLI_TCP_DEVICE. If the
                                        platform supports XTI, set ACE_HAS_XTI
                                        instead of this.
ACE_HAS_TLI_PROTOTYPES                  Platform provides TLI function
                                        prototypes
ACE_HAS_TR24731_2005_CRT                The platform provides an implementation
                                        of C99 draft TR24731 (October 2005),
                                        C run-time with more secure parameters.
ACE_HAS_TSS_EMULATION                   ACE provides TSS emulation.
                                        See also
                                        ACE_DEFAULT_THREAD_KEYS.
ACE_HAS_UALARM                          Platform supports ualarm()
ACE_HAS_UCONTEXT_T                      Platform supports ucontext_t
                                        (which is used in the extended
                                        signal API).
ACE_HAS_UNION_WAIT                      The wait() system call takes a
                                        (union wait *) rather than int
                                        *
ACE_HAS_VALGRIND                        Running with valgrind
ACE_HAS_VERBOSE_NOTSUP                  Prints out console message in
                                        ACE_NOTSUP.  Useful for
                                        tracking down origin of
                                        ACE_NOTSUP.
ACE_HAS_VERSIONED_NAMESPACE             Wrap all library code within a
                                        "versioned namespace" to
                                        prevent symbol conflicts with
                                        other versions of ACE shared
                                        libraries in third party
                                        libraries.  Default namespace
                                        name may be overridden by
                                        defining preprocessor symbol
                                        ACE_VERSIONED_NAMESPACE_NAME
                                        to desired name.
ACE_LACKS_INTMAX_T                      Platform lacks the intmax_t type
ACE_LACKS_UINTMAX_T                     Platform lacks the uintmax_t type.
ACE_LACKS_INTPTR_T                      Platform lacks the intptr_t type
ACE_LACKS_UINTPTR_T                     Platform lacks the uintptr_t type.

ACE_INT8_FORMAT_SPECIFIER               String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_INT8 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_INT16_FORMAT_SPECIFIER              String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_INT16 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_INT32_FORMAT_SPECIFIER              String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_INT32 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_INT64_FORMAT_SPECIFIER              String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_INT64 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_UINT8_FORMAT_SPECIFIER              String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_UINT8 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_UINT16_FORMAT_SPECIFIER             String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_UINT16 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_UINT32_FORMAT_SPECIFIER             String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_UINT32 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.
ACE_UINT64_FORMAT_SPECIFIER             String literal containing *printf
                                        format specifier (including the '%')
                                        to be used for ACE_UINT64 values.  If
                                        not defined, ACE will attempt to
                                        determine the correct setting.

ACE_HAS_VOIDPTR_GETTIMEOFDAY            Platform/compiler supports
                                        void * as second parameter
                                        to gettimeofday
ACE_HAS_VOIDPTR_MMAP                    Platform requires void * for
                                        mmap().
ACE_HAS_VOIDPTR_SOCKOPT                 OS/compiler uses void * arg 4
                                        setsockopt() rather than const
                                        char *
ACE_HAS_WCSNLEN                         Platform supports wcsnlen(3).
ACE_HAS_WIN32_OVERLAPPED_IO             Platform has Windows overlapped I/O;
                                        requires I/O completion ports.
ACE_HAS_WIN32_TRYLOCK                   The Win32 platform support
                                        TryEnterCriticalSection()
                                        (WinNT 4.0 and beyond)
ACE_HAS_WINSOCK2                        The Win32 platform supports
                                        WinSock 2.0
ACE_HAS_XLI                             Platform has the XLI version
                                        of TLI
ACE_HAS_XTI                             Platform has XTI
                                        (X/Open-standardized superset
                                        of TLI).  Implies ACE_HAS_TLI
                                        but uses a different header
                                        file.
ACE_INITIALIZE_MEMORY_BEFORE_USE        Memory is explicitly initialized before
                                        use. Useful when using a profiler like
                                        purify or valgrind
ACE_HRTIME_T_IS_BASIC_TYPE              ACE_hrtime_t is a basic type that
                                        doesn't require ACE_U64_TO_U32
                                        conversion
ACE_LACKS_ACCESS                        Platform lacks access() (e.g.,
                                        VxWorks)
ACE_LACKS_ACE_IOSTREAM                  Platform can not build
                                        ace/IOStream{,_T}.cpp.  This
                                        does not necessarily mean that
                                        the platform does not support
                                        iostreams.
ACE_LACKS_AUTO_MMAP_REPLACEMENT         No system support for replacing any
                                        previous mappings.
ACE_LACKS_BSEARCH                       Compiler/platform lacks the
                                        standard C library bsearch()
                                        function
ACE_LACKS_CLOSEDIR                      Platform lacks closedir and the closedir
                                        emulation must be used
ACE_LACKS_OPENDIR                       Platform lacks opendir and the opendir
                                        emulation must be used
ACE_LACKS_READDIR                       Platform lacks readdir and the readdir
                                        emulation must be used
ACE_LACKS_COND_TIMEDWAIT_RESET          pthread_cond_timedwait does
                                        *not* reset the time argument
                                        when the lock is acquired.
ACE_LACKS_CONST_TIMESPEC_PTR            Platform forgot const in
                                        cond_timewait (e.g., HP/UX).
ACE_LACKS_COND_T                        Platform lacks condition
                                        variables (e.g., Win32 and
                                        VxWorks)
ACE_LACKS_CONDATTR_PSHARED              Platform has no implementation
                                        of
                                        pthread_condattr_setpshared(),
                                        even though it supports
                                        pthreads!
ACE_LACKS_DIFFTIME                      Platform lacks difftime() implementation
ACE_LACKS_DUP2                          Platform lacks dup2().
ACE_LACKS_FCNTL                         Platform lacks POSIX-style fcntl ().
ACE_LACKS_FSYNC                         Platform lacks fsync().
ACE_LACKS_INLINE_FUNCTIONS              Platform can't handle "inline"
                                        keyword correctly.
ACE_LACKS_EXEC                          Platform lacks the exec()
                                        family of system calls (e.g.,
                                        Win32, VxWorks)
ACE_LACKS_FILELOCKS                     Platform lacks file locking
                                        mechanism
ACE_LACKS_FORK                          Platform lacks the fork()
                                        system call (e.g., Win32,
                                        VxWorks)
ACE_LACKS_GETPGID                       Platform lacks getpgid() call
                                        (e.g., Win32, and
                                        FreeBSD).
ACE_LACKS_GETSERVBYNAME                 Platforms lacks
                                        getservbyname() (e.g., VxWorks)
ACE_LACKS_GETIPNODEBYADDR               Platform lacks getipnodebyaddr().
ACE_LACKS_GETIPNODEBYNAME               Platform lacks getipnodebyname().
ACE_LACKS_INET_ATON                     Platform lacks the inet_aton()
                                        function.
ACE_LACKS_IOSTREAM_FX                   iostream header does not
                                        declare ipfx (), opfx (),
                                        etc.
ACE_LACKS_KEY_T                         Platform lacks key_t (e.g.,
                                        VxWorks, Win32)
ACE_LACKS_LINEBUFFERED_STREAMBUF        Platform lacks streambuf
                                        "linebuffered ()".
ACE_LACKS_LSTAT                         Platform lacks the lstat() function.
ACE_LACKS_MADVISE                       Platform lacks madvise()
                                        (e.g., Linux)
ACE_LACKS_MKFIFO                        Platform lacks mkfifo() e.g.,
                                        VxWorks, pSoS, and WinNT.
ACE_LACKS_MKTEMP                        Platform lacks the mktemp() function.
ACE_LACKS_MKSTEMP                       Platform lacks the mkstemp() function.
ACE_LACKS_MMAP                          The platform doesn't have
                                        mmap(2).
ACE_LACKS_MODE_MASKS                    Platform/compiler doesn't have
                                        open() mode masks.
ACE_LACKS_MPROTECT                      The platform doesn't have
                                        mprotect(2) (e.g., EPLX real
                                        time OS from CDC (based on
                                        LYNX))
ACE_LACKS_MSG_ACCRIGHTS                 Platform defines ACE_HAS_MSG,
                                        but lacks msg_accrights{,len}.
ACE_LACKS_MSG_WFMO                      Platform lacks
                                        MsgWaitForMultipleObjects
                                        (only needs to be defined when
                                        ACE_WIN32 is also defined).
ACE_LACKS_MSYNC                         Platform lacks msync() (e.g.,
                                        Linux)
ACE_LACKS_MUTEXATTR_PSHARED             Platform lacks
                                        pthread_mutexattr_setpshared().
ACE_LACKS_NAMED_POSIX_SEM               Platform lacks named POSIX
                                        semaphores
ACE_LACKS_NETDB_REENTRANT_FUNCTIONS     Platform does not support
                                        reentrant netdb functions
                                        (getprotobyname_r,
                                        getprotobynumber_r,
                                        gethostbyaddr_r,
                                        gethostbyname_r,
                                        getservbyname_r).
ACE_LACKS_NEW_H                         OS doesn't have, or we don't want to
                                        use, new.h.
ACE_LACKS_NULL_PTHREAD_STATUS           OS requires non-null status pointer
                                        for ::pthread_join ().
ACE_LACKS_PERFECT_MULTICAST_FILTERING   Platform lacks IGMPv3 "perfect" filtering
                                        of multicast dgrams at the socket level.
                                        If == 1, ACE_SOCK_Dgram_Mcast will bind
                                        the first joined multicast group to the
                                        socket, and all future joins on that
                                        socket will fail with an error.
ACE_LACKS_PRAGMA_ONCE                   Compiler complains about #pragma once
ACE_LACKS_PRI_T                         Platform lacks pri_t (e.g.,
                                        Tandem NonStop UNIX).
ACE_LACKS_PTHREAD_CANCEL                Platform lacks
                                        pthread_cancel().
ACE_LACKS_PTHREAD_SCOPE_PROCESS         Platform lacks support for
                                        PTHREAD_SCOPE_PROCESS
ACE_LACKS_PTHREAD_SIGMASK               Platform lacks pthread_sigmask ().
ACE_LACKS_PTHREAD_THR_SIGSETMASK        Platform lacks
                                        pthread_thr_sigsetmask (e.g.,
                                        MVS, HP/UX, and OSF/1 3.2)
ACE_LACKS_PUTENV_PROTOTYPE              Platform/compiler lacks the
                                        putenv() prototype (e.g.,
                                        LynxOS)
ACE_LACKS_PWD_REENTRANT_FUNCTIONS       Platform lacks getpwnam_r()
                                        methods (e.g., SGI 6.2).
ACE_LACKS_QSORT                         Compiler/platform lacks the
                                        standard C library qsort()
                                        function
ACE_LACKS_READLINK                      Platform lacks the readlink() function.
ACE_LACKS_READV                         Platform doesn't define readv,
                                        so use our own
ACE_LACKS_RENAME                        Platform lacks rename().
ACE_LACKS_RLIMIT                        Platform/compiler lacks
                                        {get,set}rlimit() function
                                        (e.g., VxWorks)
ACE_LACKS_READDIR_R                     Platform uses ACE_HAS_DIRENT
                                        but does not have readdir_r
                                        ().
ACE_LACKS_REALPATH                      Platform/compiler lacks
                                        realpath () function (e.g.,
                                        LynxOS)
ACE_LACKS_RECVMSG                       Platform lacks recvmsg()
                                        (e.g., Linux)
ACE_LACKS_RWLOCK_T                      Platform lacks readers/writer
                                        locks.
ACE_LACKS_RWLOCKATTR_PSHARED            Platform lacks
                                        pthread_rwlockattr_setpshared().
ACE_LACKS_SBRK                          Platform lacks a working
                                        sbrk() (e.g., Win32 and
                                        VxWorks)
ACE_LACKS_SCANDIR_PROTOTYPE             Platform/compiler lacks
                                        scandir() prototype
                                        (e.g., LynxOS)
ACE_LACKS_SEEKDIR                       Platform uses ACE_HAS_DIRENT
                                        but does not have seekdir ().
ACE_LACKS_SEMBUF_T                      Platform lacks struct sembuf
                                        (e.g., Win32 and VxWorks)
ACE_LACKS_SETDETACH                     Platform lacks
                                        pthread_attr_setdetachstate()
                                        (e.g., HP/UX 10.x)
ACE_LACKS_SETSCHED                      Platform lacks
                                        pthread_attr_setsched()
                                        (e.g. MVS)
ACE_LACKS_SIGACTION                     Platform lacks struct
                                        sigaction (e.g., Win32)
ACE_LACKS_SIGNED_CHAR                   Platform lacks "signed char"
                                        type (broken!)
ACE_LACKS_SIGSET                        Platform lacks signal sets
                                        (e.g., Win32)
ACE_LACKS_STRPTIME                      Platform/compiler lacks the strptime()
                                        function.
ACE_LACKS_WCSCHR                        Platform/compiler lacks wcschr()
ACE_LACKS_STRDUP                        Platform/compiler lacks strdup()
ACE_LACKS_WCSDUP                        Platform/compiler lacks wcsdup()
ACE_LACKS_WCSRCHR                       Platform/compiler lacks wcsrchr()
ACE_LACKS_SWAB                          Platform/compiler lacks
                                        swab () function.
ACE_LACKS_SYS_MSG_H                     Platform lacks sys/msg.h
                                        (e.g., VxWorks)
ACE_LACKS_SYS_PARAM_H                   Platform lacks <sys/param.h>
                                        (e.g., MVS)
ACE_LACKS_SENDMSG                       Platform lacks sendmsg()
                                        (e.g., Linux)
ACE_LACKS_SI_ADDR                       Platform lacks the si_addr
                                        field of siginfo_t (e.g.,
                                        VxWorks and HP/UX 10.x)
ACE_LACKS_SYMLINKS                      Platform lacks symbolic links
ACE_LACKS_SYSV_SHMEM                    Platform lacks System V shared
                                        memory (e.g., Win32 and
                                        VxWorks)
ACE_LACKS_SIGINFO_H                     Platform lacks the siginfo.h
                                        include file (e.g., MVS)
ACE_LACKS_SOCKETPAIR                    Platform lacks the
                                        socketpair() cal
ACE_LACKS_STRCASECMP                    Compiler/platform lacks
                                        strcasecmp() (e.g., DG/UX,
                                        UNIXWARE, VXWORKS)
ACE_LACKS_STRRECVFD                     Platform doesn't define struct
                                        strrecvfd.
ACE_LACKS_SYSCALL                       Platform doesn't have
                                        syscall() prototype
ACE_LACKS_T_ERRNO                       Header files lack t_errno for
                                        TLI
ACE_LACKS_TCP_NODELAY                   OS does not support TCP_NODELAY.
ACE_LACKS_TELLDIR                       Platform uses ACE_HAS_DIRENT
                                        but does not have telldir ().
ACE_LACKS_THREAD_STACK_SIZE             Platform lacks
                                        pthread_attr_setstacksize()
                                        (e.g., Linux pthreads)
ACE_LACKS_THR_CONCURRENCY_FUNCS    (ONLY APPLIES TO SOLARIS)
                                        Platform does not support
                                        thr_getconcurrency/thr_setconcurrency
                                        functions, or their implementation
                                        is effectively a "no-op".  This
                                        notably applies for Solaris >= 5.9.
                                        Note that if you build on Solaris 8
                                        and run on Solaris 9+, you can
                                        encounter thread creation errors
                                        unless you rebuild on the target
                                        platform.
ACE_LACKS_TIMEDWAIT_PROTOTYPES          MIT pthreads platform lacks
                                        the timedwait prototypes
ACE_LACKS_TIMESPEC_T                    Platform does not define
                                        timepec_t as a typedef for
                                        struct timespec.
ACE_LACKS_TRUNCATE                      Platform doesn't have truncate()
                                        (e.g., vxworks)
ACE_LACKS_UALARM_PROTOTYPE              Platform/compiler lacks the
                                        ualarm() prototype (e.g.,
                                        Solaris)
ACE_LACKS_CHAR_RIGHT_SHIFTS             Compiler does not have any istream
                                        operator>> for chars, u_chars, or
                                        signed chars.
ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS        Compiler does not have
                                        operator>> (istream &, u_char *) or
                                        operator>> (istream &, signed char *)
ACE_LACKS_UCONTEXT_H                    Platform lacks the ucontext.h
                                        file
ACE_LACKS_UMASK                         Platform lacks umask function
ACE_LACKS_UNBUFFERED_STREAMBUF          Platform lacks streambuf
                                        "unbuffered ()".
ACE_LACKS_UNISTD_H                      Platform lacks the unistd.h
                                        file (e.g., VxWorks and Win32)
ACE_LACKS_UNIX_DOMAIN_SOCKETS           ACE platform has no UNIX
                                        domain sockets
ACE_LACKS_UNIX_SIGNALS                  Platform lacks full signal
                                        support (e.g., Win32).
ACE_LACKS_UNSIGNEDLONGLONG_T            Compiler/platform does not
                                        support the unsigned long
                                        long datatype.
ACE_LACKS_UTSNAME_T                     Platform lacks struct utsname
                                        (e.g., Win32 and VxWorks)
ACE_LACKS_UNAME                         Platform lacks uname calls
ACE_LACKS_WAIT                          The platform lacks wait
ACE_LACKS_WIN32_GETPROCESSTIMES         The Windows platform doesn't have
                                        GetProcessTimes().
ACE_LACKS_WIN32_MOVEFILEEX              The Windows platform doesn't have
                                        MoveFileEx().
ACE_LACKS_WIN32_SECURITY_DESCRIPTORS    The Windows platform doesn't have
                                        security descriptor support.
ACE_LACKS_WRITEV                        Platform doesn't define
                                        writev, so use our own

ACE_NEEDS_DEV_IO_CONVERSION             Necessary with some compilers
                                        to pass ACE_TTY_IO as
                                        parameter to DEV_Connector.
ACE_NEEDS_HUGE_THREAD_STACKSIZE         Required by platforms with
                                        small default stacks.
ACE_NEEDS_LWP_PRIO_SET                  OS has LWPs, and when the
                                        priority of a bound thread is
                                        set, then the LWP priority
                                        must be set also.
ACE_NEEDS_SCHED_H                       Platform needs to #include
                                        <sched.h>
                                        to get thread scheduling
                                        defs.

ACE_NO_WIN32_LEAN_AND_MEAN              If this is set, then ACE does not
                                        define WIN32_LEAN_AND_MEAN before
                                        including <windows.h>. Needed for
                                        code that uses non-lean Win32
                                        facilities such as COM.

ACE_SHM_OPEN_REQUIRES_ONE_SLASH         The path specified on shm_open() must
                                        have a leading, single slash and not
                                        have any other slashes.

ACE_WSTRING_HAS_USHORT_SUPPORT          If a platform has wchar_t as a
                                        separate type, then
                                        ACE_WString doesn't have a
                                        constructor that understands
                                        an ACE_USHORT16 string.  So
                                        this macro enables
                                        one. (mostly used my ACE Name
                                        Space).

ACE_HAS_BROKEN_PREALLOCATED_OBJECTS_AFTER_FORK
                                        Under QNX/RTP the objects preallocated
                                        in ACE_OS_Object_Manager cannot be
                                        destroyed after a fork() call.
                                        Since these objects are only destroyed
                                        at application shutdown we take the
                                        simpler approach of not destroying
                                        them at all.
                                        Both QNX/RTP and LynxOS suffer from
                                        this problem.

ACE_DONT_INIT_WINSOCK                   This definition defines whether or not
                                        to explicitly initialize Winsock during
                                        ACE::init() (i.e., whether WSAStartup()
                                        is called). Some Win32 platforms have
                                        dependent characteristics between
                                        ACE initialization and
                                        network initialization.

----------------------------------------

The following macros determine the svc.conf file format ACE uses.

Macro                                   Description
-----                                   -----------
ACE_HAS_CLASSIC_SVC_CONF                This macro forces ACE to use
                                        the classic svc.conf format.

ACE_HAS_XML_SVC_CONF                    This macro forces ACE to use the XML
                                        svc.conf format.

ACE_USES_CLASSIC_SVC_CONF               This macro should be defined
                                        as 0 or 1, depending on the
                                        preferred svc.conf file
                                        format.  Defining this macro
                                        to 0 means ACE will use XML
                                        svc.conf file format.
                                        Defining it to 1 will force
                                        ACE to use the classic
                                        svc.conf format.
                                        ** This macro takes precedence
                                        ** over previous two macros.

----------------------------------------
The following is a partial list of where some of these macros are used
in the code.  This list was originally compiled by Jam Hamidi
(jh1@core01.osi.com).  It is now hopelessly out of date.  Hopefully,
someone will come along and update it....

ACE_HAS_ALLOCA:
---------------

  Used in:
     libsrc/IPC_SAP/SOCK_SAP/SOCK_Connect.C
        for allocation of iovp
A
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
        for alocation of iovp

  In solaris:
     alloca() allocates size bytes of space in the stack frame of
     the  caller,  and  returns a pointer to the allocated block.
     This temporary space is automatically freed when the  caller
     returns.  Note: if the allocated block is beyond the current
     stack limit, the resulting behavior is undefined.

ACE_HAS_AUTOMATIC_INIT_FINI:
----------------------------

  Used in:
     libsrc/Service_Configurator/Service_Repository.i
     libsrc/Service_Configurator/Parse_Node.i
     include/Parse_Node.i
     include/Service_Repository.i

  In solaris:
     _init() initializes a loadable module. It is  called  before
     any other routine in a loadable module.
     _info()  returns  information  about  a   loadable   module.
     _fini() should return the return value from mod_remove(9F).
     This flag if set, doesn't do anything.  If not set, forces
     _init() and _fini() to be executed as is:
       dlsym ((char *) handle, "_fini").

ACE_HAS_HI_RES_TIMER:
---------------------

  Used In:
     libsrc/Misc/High_Res_Timer.h
     libsrc/Misc/High_Res_Timer.C
     include/High_Res_Timer.h

  In Solaris,
     C++ wrapper around gethrtime(), which returns a long long.
         gethrtime() returns the current high-resolution  real  time.
     Time  is  expressed as nanoseconds since some arbitrary time
     in the past; it is not correlated in any way to the time  of
     day,  and  thus  is not subject to resetting, drifting, etc.

  Notes:
     TBA


ACE_LACKS_T_ERRNO:
-------------------

  Used In:
     ace/OS.h

  Notes:
     if set, adds:
     extern int t_errno;


ACE_HAS_POSIX_NONBLOCK:
-----------------------

  Used in:
     ace/OS.h

  Notes:
     if defined, sets ACE_NONBLOCK and O_NONBLOCK
     O_NONBLOCK is used in libsrc/Misc/misc.C to do a
       fcntl (fd, F_SETFL, opt)
     ACE_NONBLOCK is used in libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv.C in the
       disable member function and options passed to the open function
       in libsrc/IPC_SAP/FIFO_SAP/FIFO.C


ACE_HAS_PROC_FS:
----------------

  Used in:
     ace/OS.h
     libsrc/Misc/Profile_Timer.i

  Notes:
     if set, includes <sys/procfs.h>
     the PIOCUSAGE define is used in Profile_Timer.

  Solaris:
     procfs.h defines things for the prpsinfo structure (basically to
     do a "ps" from inside a program).


ACE_HAS_PRUSAGE_T:
------------------

  Used in:
     libsrc/Misc/Profile_Timer.h
     libsrc/Misc/Profile_Timer.C

  Notes:
     If defined, declares the Profile_Timer class that does start(),
     stop() and basically gets real_time, user_time, system_time for
     an interval.
     This stuff is highly non-portable.

ACE_HAS_SEMUN:
--------------

  Used in:
     libsrc/Semaphores/Semaphore_Simple.h

  Notes:
     if not defined, defines semun as:
     union semun {
           int          val;    /* value for SETVAL */
           struct semid_ds      *buf;   /* buffer for IPC_STAT & IPC_SET */
           ushort               *array; /* array for GETALL & SETALL */
     };


ACE_HAS_SIG_ATOMIC_T:
---------------------

  Used in:
     ace/OS.h

  Notes:
     if not defined, does a:
     typedef int sig_atomic_t;
     This is used in the Reactor and service configurator.

ACE_HAS_SSIZE_T:
----------------

  Used in:
     ace/OS.h

  Notes:
     if not defined, does a
     typedef int ssize_t;
     used mostly in IPC_SAP.  (don't confuse with size_t).

ACE_HAS_STRBUF_T:
-----------------

  Used in:
     include/Str_Buf.h

  Notes:
     if not defined, declares the strbuf structure as:
     struct strbuf
     {
       int      maxlen;                 /* no. of bytes in buffer */
       int      len;                    /* no. of bytes returned */
       void     *buf;                   /* pointer to data */
     };

  Solaris:
     defined in /usr/include/sys/stropts.h
     Sys V.4 Streams.
     uses strbuf as parameter to putmsg, putpmsg:
     int putmsg(int fildes, const struct strbuf *ctlptr,
          const struct strbuf *dataptr, int flags);


ACE_HAS_STREAMS:
----------------

  Used In:
     ace/OS.h
     libsrc/IPC_SAP/SOCK_SAP/LSOCK.C

  Notes:
     if defined, includes <stropts.h>


ACE_HAS_STREAM_PIPES:
---------------------

  Used in:
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.h
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.h
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.C
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE.h
     libsrc/IPC_SAP/SPIPE_SAP/SPIPE.C
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.h
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.C
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.i
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.h
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.C
     libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.i

  Notes:
     if not set, won't be able to use the SPIPE class (IPC_SAP) with
     rendezvous handles.


ACE_HAS_SVR4_DYNAMIC_LINKING:
-----------------------------

  Used in:
     ace/OS.h
     tests/Service_Configurator/CCM_App.C

  Notes:
     if defined, includes <dlfcn.h>
     with dlopen(), dlsym(), etc..


ACE_HAS_SVR4_GETTIMEOFDAY:
--------------------------

  Used in:
     ace/OS.h
     libsrc/Reactor/Timer_Queue.i

  Notes:
     has to do with gettimeofday ().

  Solaris:
     gettimeofday (struct timeval *tp)


ACE_HAS_POLL:
------------
  Used in:
     ace/OS.h

  Notes:
     #if defined (ACE_HAS_POLL)
     #include /**/ <poll.h>
     #endif /* ACE_HAS_POLL */

ACE_USE_POLL_IMPLEMENTATION:
------------------

  Used in:
     ace/OS.h

  Notes:
    Use the poll() event demultiplexor rather than select().


ACE_HAS_SVR4_SIGNAL_T:
----------------------

  Used in:
     ace/OS.h

  Notes:
     #if defined (ACE_HAS_SVR4_SIGNAL_T)
     typedef void (*SignalHandler)(int);
     typedef void (*SignalHandlerV)(void);
     #elif defined (ACE_HAS_SIGNALHANDLERV_INT_ARG)
     typedef void (*SignalHandler)(int);
     typedef void (*SignalHandlerV)(int);
     #else
     #define SignalHandler SIG_PF
     typedef void (*SignalHandlerV)(...);
     #endif /* ACE_HAS_SVR4_SIGNAL_T */


ACE_HAS_SVR4_TLI:
-----------------

  Used in:
     libsrc/IPC_SAP/TLI_SAP/TLI.C
     libsrc/IPC_SAP/TLI_SAP/TLI.h
     libsrc/IPC_SAP/TLI_SAP/TLI_Stream.C

  Notes:
     TLI is the transport layer calls as in: t_bind(), t_open(), t_unbind(),
     t_optmgmt(), ... in SunOS and Solaris.


ACE_HAS_SYS_FILIO_H:
--------------------

  Used in:
     ace/OS.h

  Notes:
     if not defined, includes <sys/filio.h>.
     didn't find any reference to anything in this file in the ACE code.

  Solaris:
     filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
     for FIOLFS,.. solaris has this to say:
     /*
      * ioctl's for Online: DiskSuite.
      * WARNING - the support for these ioctls may be withdrawn
      * in the future OS releases.
      */


ACE_HAS_TEMPLATE_TYPEDEFS:
--------------------------

  Used in:
     libsrc/ASX/*.[Chi]

  Notes:
     cfront-based C++ compilers don't implement templates that support
     classes with typedefs of other types as formal arguments.  This
     typedef uses the C++ preprocessor to work around this problem.

ACE_HAS_THREADS:
----------------

  Used in:
     libsrc/Service_Configurator/Svc_Conf.y.C
     libsrc/Service_Configurator/Thread_Spawn.i
     libsrc/Threads/Synch.C
     libsrc/Threads/Synch.i
     libsrc/Threads/Thr_Manager.i
     libsrc/ASX/STREAM.C
     libsrc/ASX/Queue.C
     libsrc/ASX/Module.C
     libsrc/ASX/Stream_Modules.C
     libsrc/ASX/Multiplexor.C
     libsrc/ASX/Message_List.C
     include/Message_List.h
     include/Module.h
     include/Multiplexor.h
     include/Queue.h
     include/STREAM.h
     include/Stream_Modules.h
     include/Service_Types.h
     include/Thread_Spawn.h
     include/Synch.h
     include/Thr_Manager.h

  Notes:
     We use Message_List.h even in a non-threaded environment.
     our XOMessageList.h does this by #ifdefs around Threaded things.


ACE_HAS_TIMOD_H:
----------------

  Used in:
     ace/OS.h

  Notes:
     if defined, include <sys/timod.h>

  Solaris:
     timod is a STREAMS module for use with the Transport  Inter-
     face  (TI)  functions  of the Network Services library.  The
     timod module converts a set of ioctl(2) calls  into  STREAMS
     messages  that  may be consumed by a transport protocol pro-
     vider that supports the Transport Interface.  This allows  a
     user to initiate certain TI functions as atomic operations.


ACE_HAS_TIUSER_H:
-----------------

  Used in:
     ace/OS.h

  Notes:
     if set, includes <tiuser.h>

  Solaris:
     in conjunction with t_bind, t_accept, etc.. transport layer.


ACE_USE_POLL_IMPLEMENTATION:
----------------------------

  Used in:
     libsrc/Reactor/Reactor.i
     include/Event_Handler.h
     ace/OS.h
     include/Reactor.h

  Notes:
     in the reactor, use poll instead of select.  In general,
     good thing to have set.

ACE_USES_GPROF:
----------------------------
  Used in:
    ace/Base_Thread_Adapter.h
    ace/Base_Thread_Adapter.inl
    ace/Base_Thread_Adapter.cpp

  Notes:
    When using gprof mainly on Linux, #define ACE_USES_GPROF
    will add calls to getitimer/setitimer in order to initialize profile
    timer and overcome the problem of gprof with multithreaded applications.

ACE_QTREACTOR_CLEAR_PENDING_EVENTS:
----------------------------
  Used in:
    ace/QtReactor.cpp:
    QtReactor by default does not clear qt events pending for
    activated socket. Clearing costs much, at least 2 hash accesses
    in ACE, and 2 another in Qt. It is also better to not clear
    pending events as some side effects are unknown. However,
    when events are not clear, then some user applications may be
    confused by handle_input/output/exception called without any
    data eg. in ACE_Acceptor::make_svc_handler. This swithc is
    intended to quickly fix user application which does not
    follow some reactor rules.
 Linux:
   It seems linux::qt does not queue pending events. Do not define
   this switch.
 Windows:
   Windows::qt queues pending events. If user application has handle_*
   methods which cannot be called without data, then turn on this switch
   to quickly fix the bug. However, one should seriously fix the
   application then.