b68d66bb9b
This commit adds support for project_framework_component_* parameter matching. This is the first step in allowing the same framework name in multiple projects. This change also bumps the MCA component version to 2.1.0. All master frameworks have been updated to use the new component versioning macro. An mca.h has been added to each project to add a project specific versioning macro of the form PROJECT_MCA_VERSION_2_1_0. Signed-off-by: Nathan Hjelm <hjelmn@me.com>
117 строки
3.6 KiB
C
117 строки
3.6 KiB
C
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
|
/*
|
|
* Copyright (c) 2014 Intel, Inc. All rights reserved
|
|
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
|
|
* reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
/** @file:
|
|
*
|
|
* The Open RTE Run-Time Control Framework (RTC)
|
|
*
|
|
*/
|
|
|
|
#ifndef ORTE_MCA_RTC_H
|
|
#define ORTE_MCA_RTC_H
|
|
|
|
#include "orte_config.h"
|
|
#include "orte/types.h"
|
|
|
|
#include "orte/mca/mca.h"
|
|
#include "opal/class/opal_list.h"
|
|
|
|
#include "orte/runtime/orte_globals.h"
|
|
|
|
BEGIN_C_DECLS
|
|
|
|
typedef struct {
|
|
opal_list_item_t super;
|
|
char *component;
|
|
char *category;
|
|
opal_value_t control;
|
|
} orte_rtc_resource_t;
|
|
ORTE_DECLSPEC OBJ_CLASS_DECLARATION(orte_rtc_resource_t);
|
|
|
|
/* Assign run-time controls for a given job. This provides each component with
|
|
* an opportunity to insert attributes into the orte_job_t and/or its
|
|
* associated proc structures that will be passed to backend daemons for
|
|
* controlling the job. For example, if the user specified a frequency
|
|
* setting for the job, then the freq component will have an opportunity
|
|
* to add an attribute to the job so the freq component on the remote daemons
|
|
* can "catch" it and perform the desired action
|
|
*/
|
|
typedef void (*orte_rtc_base_module_assign_fn_t)(orte_job_t *jdata);
|
|
|
|
/* Set run-time controls for a given job and/or process. This can include
|
|
* controls for power, binding, memory, and any other resource on the node.
|
|
* Each active plugin will be given a chance to operate on the request, setting
|
|
* whatever controls that lie within its purview.
|
|
*
|
|
* Each module is responsible for reporting errors via the state machine. Thus,
|
|
* no error code is returned. However, warnings and error messages for the user
|
|
* can be output via the provided error_fd */
|
|
typedef void (*orte_rtc_base_module_set_fn_t)(orte_job_t *jdata,
|
|
orte_proc_t *proc,
|
|
char ***env,
|
|
int error_fd);
|
|
|
|
/* Return a list of valid controls values for this component.
|
|
* Each module is responsible for adding its control values
|
|
* to a list of opal_value_t objects.
|
|
*/
|
|
typedef void (*orte_rtc_base_module_get_avail_vals_fn_t)(opal_list_t *vals);
|
|
|
|
/* provide a way for the module to init during selection */
|
|
typedef int (*orte_rtc_base_module_init_fn_t)(void);
|
|
|
|
/* provide a chance for the module to finalize */
|
|
typedef void (*orte_rtc_base_module_fini_fn_t)(void);
|
|
|
|
/*
|
|
* rtc module version 1.0.0
|
|
*/
|
|
typedef struct {
|
|
orte_rtc_base_module_init_fn_t init;
|
|
orte_rtc_base_module_fini_fn_t finalize;
|
|
orte_rtc_base_module_assign_fn_t assign;
|
|
orte_rtc_base_module_set_fn_t set;
|
|
orte_rtc_base_module_get_avail_vals_fn_t get_available_values;
|
|
} orte_rtc_base_module_t;
|
|
|
|
|
|
/* provide a public API version */
|
|
typedef struct {
|
|
orte_rtc_base_module_assign_fn_t assign;
|
|
orte_rtc_base_module_set_fn_t set;
|
|
orte_rtc_base_module_get_avail_vals_fn_t get_available_values;
|
|
} orte_rtc_API_module_t;
|
|
|
|
|
|
/**
|
|
* rtc component version 1.0.0
|
|
*/
|
|
typedef struct orte_rtc_base_component_1_0_0_t {
|
|
/** Base MCA structure */
|
|
mca_base_component_t base_version;
|
|
/** Base MCA data */
|
|
mca_base_component_data_t base_data;
|
|
} orte_rtc_base_component_t;
|
|
|
|
/* declare the struct containing the public API */
|
|
ORTE_DECLSPEC extern orte_rtc_API_module_t orte_rtc;
|
|
|
|
/*
|
|
* Macro for use in components that are of type rtc
|
|
*/
|
|
#define ORTE_RTC_BASE_VERSION_1_0_0 \
|
|
ORTE_MCA_BASE_VERSION_2_1_0("rtc", 1, 0, 0)
|
|
|
|
|
|
END_C_DECLS
|
|
|
|
#endif
|