1 /* -*- C -*-
2 *
3 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
4 * University Research and Technology
5 * Corporation. All rights reserved.
6 * Copyright (c) 2004-2006 The University of Tennessee and The University
7 * of Tennessee Research Foundation. All rights
8 * reserved.
9 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 * University of Stuttgart. All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 * All rights reserved.
13 * Copyright (c) 2012 Los Alamos National Security, Inc. All rights reserved.
14 * Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
15 * Copyright (c) 2015 Research Organization for Information Science
16 * and Technology (RIST). All rights reserved.
17 * $COPYRIGHT$
18 *
19 * Additional copyrights may follow
20 *
21 * $HEADER$
22 *
23 */
24 #ifndef PMIX_PREG_BASE_H_
25 #define PMIX_PREG_BASE_H_
26
27 #include <src/include/pmix_config.h>
28
29
30 #ifdef HAVE_SYS_TIME_H
31 #include <sys/time.h> /* for struct timeval */
32 #endif
33 #ifdef HAVE_STRING_H
34 #include <string.h>
35 #endif
36
37 #include "src/class/pmix_pointer_array.h"
38 #include "src/mca/mca.h"
39 #include "src/mca/base/pmix_mca_base_framework.h"
40
41 #include "src/mca/preg/preg.h"
42
43
44 BEGIN_C_DECLS
45
46 /*
47 * MCA Framework
48 */
49 PMIX_EXPORT extern pmix_mca_base_framework_t pmix_preg_base_framework;
50 /**
51 * PREG select function
52 *
53 * Cycle across available components and construct the list
54 * of active modules
55 */
56 PMIX_EXPORT pmix_status_t pmix_preg_base_select(void);
57
58 /**
59 * Track an active component / module
60 */
61 struct pmix_preg_base_active_module_t {
62 pmix_list_item_t super;
63 int pri;
64 pmix_preg_module_t *module;
65 pmix_mca_base_component_t *component;
66 };
67 typedef struct pmix_preg_base_active_module_t pmix_preg_base_active_module_t;
68 PMIX_CLASS_DECLARATION(pmix_preg_base_active_module_t);
69
70
71 /* framework globals */
72 struct pmix_preg_globals_t {
73 pmix_list_t actives;
74 bool initialized;
75 };
76 typedef struct pmix_preg_globals_t pmix_preg_globals_t;
77
78 PMIX_EXPORT extern pmix_preg_globals_t pmix_preg_globals;
79
80 PMIX_EXPORT pmix_status_t pmix_preg_base_generate_node_regex(const char *input,
81 char **regex);
82 PMIX_EXPORT pmix_status_t pmix_preg_base_generate_ppn(const char *input,
83 char **ppn);
84 PMIX_EXPORT pmix_status_t pmix_preg_base_parse_nodes(const char *regexp,
85 char ***names);
86 PMIX_EXPORT pmix_status_t pmix_preg_base_parse_procs(const char *regexp,
87 char ***procs);
88 PMIX_EXPORT pmix_status_t pmix_preg_base_resolve_peers(const char *nodename,
89 const char *nspace,
90 pmix_proc_t **procs, size_t *nprocs);
91 PMIX_EXPORT pmix_status_t pmix_preg_base_resolve_nodes(const char *nspace,
92 char **nodelist);
93
94
95 END_C_DECLS
96
97 #endif