updated argc before calling MPI_Init in case argc and argv do not agree.
[charm.git] / src / arch / template / conv-mach.h
1 #ifndef _CONV_MACH_H
2 #define _CONV_MACH_H
3
4 /* define the default linker, together with its options */
5 #define CMK_DLL_CC   "g++ -shared -O3 -o "
6
7 /* 1 if the machine has a function called "getpagesize()", 0 otherwise .
8    used in the memory files of converse */
9 #define CMK_GETPAGESIZE_AVAILABLE                          0
10
11 /* defines which version of memory handlers should be used.
12    used in conv-core/machine.c */
13 #define CMK_MALLOC_USE_GNU_MALLOC                          0
14 #define CMK_MALLOC_USE_OS_BUILTIN                          1
15
16 #define CMK_MEMORY_PAGESIZE                                8192
17 #define CMK_MEMORY_PROTECTABLE                             1
18
19 /* specifies if there is a node queue. it is used in convcore.c and it is
20    tipically set to 1 in smp versions */
21 #define CMK_NODE_QUEUE_AVAILABLE                           0
22
23 /* the following definitions set the type of shared variables to be used. only
24    one of them must be 1, all the others 0. The different implementations are in
25    convserve.h Typically used are UNAVAILABLE for non SMP versions and
26    POSIX_THREADS_SMP for SMP versions. The others are used only in special
27    cases: UNIPROCESSOR in sim and uth, PTHREADS in origin,
28    and NT_THREADS in windows. */
29 #define CMK_SHARED_VARS_UNAVAILABLE                        1 /* non SMP versions */
30 #define CMK_SHARED_VARS_POSIX_THREADS_SMP                  0 /* SMP versions */
31 #define CMK_SHARED_VARS_UNIPROCESSOR                       0
32 #define CMK_SHARED_VARS_PTHREADS                           0
33 #define CMK_SHARED_VARS_NT_THREADS                         0
34
35 /* the following define if signal handlers should be used, both equal to zero
36    means that signals will not be used. only one of the following can be 1, the
37    other must be 0. they differ in the fact that the second (_WITH_RESTART)
38    enables retry on interrupt (a function is recalled upon interrupt and does
39    not return EINTR as in the first case) */
40 #define CMK_SIGNAL_USE_SIGACTION                           0
41 #define CMK_SIGNAL_USE_SIGACTION_WITH_RESTART              1
42
43 /* specifies whether the CthCpv variables should be defined as Cpv (0) or
44    directly as normal c variables (1) */
45 #define CMK_THREADS_REQUIRE_NO_CPV                         0
46
47 /* decide which is the default implementation of the threads (see threads.c)
48    Only one of the following can be 1. If none of them is selected, qthreads
49    will be used as default. This default can be overwritten at compile time
50    using -DCMK_THREADS_BUILD_"type"=1 */
51 #define CMK_THREADS_USE_CONTEXT                            0
52 #define CMK_THREADS_USE_JCONTEXT                           0
53 #define CMK_THREADS_USE_PTHREADS                           0
54
55 /* Specifies what kind of timer to use, and the correspondent headers will be
56    included in convcore.c. If none is selected, then the machine.c file needs to
57    implement the timer primitives. */
58 #define CMK_TIMER_USE_RTC                                  0
59 #define CMK_TIMER_USE_RDTSC                                0
60 #define CMK_TIMER_USE_GETRUSAGE                            0
61 #define CMK_TIMER_USE_SPECIAL                              0
62 #define CMK_TIMER_USE_TIMES                                0
63 #define CMK_TIMER_USE_BLUEGENEL                            0
64
65
66 /* In order to have a type with a fixed length across machines, these define the
67    different size integers, unsigned integers, and floats as the machine
68    specific types corresponding to the given sizes (2, 4, 8 bytes) */
69 #define CMK_TYPEDEF_INT2 short
70 #define CMK_TYPEDEF_INT4 int
71 #define CMK_TYPEDEF_INT8 long
72 #define CMK_TYPEDEF_UINT2 unsigned short
73 #define CMK_TYPEDEF_UINT4 unsigned int
74 #define CMK_TYPEDEF_UINT8 unsigned long long
75 #define CMK_TYPEDEF_FLOAT4 float
76 #define CMK_TYPEDEF_FLOAT8 double
77
78 /* Specifies what the processor will do when it is idle, either sleep (1) or go
79    into busy waiting mode (0). In convcore.c there are a few files included if
80    sleeping mode, but the real distinct implementation is in the machine.c
81    file. */
82 #define CMK_WHEN_PROCESSOR_IDLE_USLEEP                     1
83
84 /* specifies weather there is a web server collecting utilization statistics (1)
85    or not (0) */
86 #define CMK_WEB_MODE                                       1
87
88 #define CMK_DEBUG_MODE                                     0
89
90 /* enables the load balancer framework. set to 1 for almost all the machines */
91 #define CMK_LBDB_ON                                        1
92
93 /* snables smp support if set to 1 */
94 #define CMK_SMP                                            0
95
96 /* Other possible definitions:
97
98 In fault tolerant architectures, CK_MEM_CHECKPOINT can be set. In this case the
99 extended header must contain also another field called "pn" (phase number).
100
101 */
102
103 #endif