This source file includes following definitions.
- opal_process_name_ntoh_intr
- opal_process_name_hton_intr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef OPAL_PROC_H
18 #define OPAL_PROC_H
19
20 #include "opal_config.h"
21 #include "opal/class/opal_list.h"
22 #include "opal/mca/hwloc/hwloc-internal.h"
23 #include "opal/types.h"
24 #include "opal/dss/dss.h"
25
26
27 #if OPAL_ENABLE_HETEROGENEOUS_SUPPORT
28 #include <arpa/inet.h>
29 #endif
30
31
32
33
34
35
36
37
38
39 #define OPAL_JOBID_T OPAL_UINT32
40 #define OPAL_JOBID_MAX UINT32_MAX-2
41 #define OPAL_JOBID_MIN 0
42 #define OPAL_JOBID_INVALID (OPAL_JOBID_MAX + 2)
43 #define OPAL_JOBID_WILDCARD (OPAL_JOBID_MAX + 1)
44
45 #define OPAL_VPID_T OPAL_UINT32
46 #define OPAL_VPID_MAX UINT32_MAX-2
47 #define OPAL_VPID_MIN 0
48 #define OPAL_VPID_INVALID (OPAL_VPID_MAX + 2)
49 #define OPAL_VPID_WILDCARD (OPAL_VPID_MAX + 1)
50
51 #define OPAL_PROC_MY_NAME (opal_proc_local_get()->proc_name)
52 #define OPAL_PROC_MY_HOSTNAME (opal_proc_local_get()->proc_hostname)
53
54 #define OPAL_NAME_WILDCARD (&opal_name_wildcard)
55 OPAL_DECLSPEC extern opal_process_name_t opal_name_wildcard;
56 #define OPAL_NAME_INVALID (&opal_name_invalid)
57 OPAL_DECLSPEC extern opal_process_name_t opal_name_invalid;
58
59
60 #define OPAL_NAME_ARGS(n) \
61 (unsigned long) ((NULL == n) ? (unsigned long)OPAL_JOBID_INVALID : (unsigned long)(n)->jobid), \
62 (unsigned long) ((NULL == n) ? (unsigned long)OPAL_VPID_INVALID : (unsigned long)(n)->vpid) \
63
64 #if OPAL_ENABLE_HETEROGENEOUS_SUPPORT && !defined(WORDS_BIGENDIAN)
65 #define OPAL_PROCESS_NAME_NTOH(guid) opal_process_name_ntoh_intr(&(guid))
66 static inline __opal_attribute_always_inline__ void
67 opal_process_name_ntoh_intr(opal_process_name_t *name)
68 {
69 name->jobid = ntohl(name->jobid);
70 name->vpid = ntohl(name->vpid);
71 }
72 #define OPAL_PROCESS_NAME_HTON(guid) opal_process_name_hton_intr(&(guid))
73 static inline __opal_attribute_always_inline__ void
74 opal_process_name_hton_intr(opal_process_name_t *name)
75 {
76 name->jobid = htonl(name->jobid);
77 name->vpid = htonl(name->vpid);
78 }
79 #else
80 #define OPAL_PROCESS_NAME_NTOH(guid)
81 #define OPAL_PROCESS_NAME_HTON(guid)
82 #endif
83
84 typedef struct opal_proc_t {
85
86 opal_list_item_t super;
87
88 opal_process_name_t proc_name;
89
90 uint32_t proc_arch;
91
92 opal_hwloc_locality_t proc_flags;
93
94 struct opal_convertor_t* proc_convertor;
95
96
97 char* proc_hostname;
98 } opal_proc_t;
99 OBJ_CLASS_DECLARATION(opal_proc_t);
100
101 typedef struct {
102 opal_list_item_t super;
103 opal_process_name_t name;
104 } opal_namelist_t;
105 OBJ_CLASS_DECLARATION(opal_namelist_t);
106
107 typedef struct opal_process_info_t {
108 char *nodename;
109 char *job_session_dir;
110 char *proc_session_dir;
111 int32_t num_local_peers;
112 int32_t my_local_rank;
113 char *cpuset;
114 } opal_process_info_t;
115 OPAL_DECLSPEC extern opal_process_info_t opal_process_info;
116
117 OPAL_DECLSPEC extern opal_proc_t* opal_proc_local_get(void);
118 OPAL_DECLSPEC extern int opal_proc_local_set(opal_proc_t* proc);
119 OPAL_DECLSPEC extern void opal_proc_set_name(opal_process_name_t *name);
120
121
122
123
124
125
126 typedef int (*opal_compare_proc_fct_t)(const opal_process_name_t, const opal_process_name_t);
127 OPAL_DECLSPEC extern opal_compare_proc_fct_t opal_compare_proc;
128
129
130 OPAL_DECLSPEC extern char* (*opal_process_name_print)(const opal_process_name_t);
131 OPAL_DECLSPEC extern int (*opal_convert_string_to_process_name)(opal_process_name_t *name,
132 const char* name_string);
133 OPAL_DECLSPEC extern int (*opal_convert_process_name_to_string)(char** name_string,
134 const opal_process_name_t *name);
135 OPAL_DECLSPEC extern char* (*opal_vpid_print)(const opal_vpid_t);
136 OPAL_DECLSPEC extern char* (*opal_jobid_print)(const opal_jobid_t);
137 OPAL_DECLSPEC extern int (*opal_snprintf_jobid)(char* name_string, size_t size, opal_jobid_t jobid);
138 OPAL_DECLSPEC extern int (*opal_convert_string_to_jobid)(opal_jobid_t *jobid, const char *jobid_string);
139
140
141
142
143
144
145 OPAL_DECLSPEC extern struct opal_proc_t *(*opal_proc_for_name) (const opal_process_name_t name);
146
147 #define OPAL_NAME_PRINT(OPAL_PN) opal_process_name_print(OPAL_PN)
148 #define OPAL_JOBID_PRINT(OPAL_PN) opal_jobid_print(OPAL_PN)
149 #define OPAL_VPID_PRINT(OPAL_PN) opal_vpid_print(OPAL_PN)
150
151
152
153
154
155 OPAL_DECLSPEC char* opal_get_proc_hostname(const opal_proc_t *proc);
156
157 #endif