Viewing file: rtc.h (3.61 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* -*- 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
|