1
1
openmpi/orte/mca/plm/plm.h
Ralph Castain d70e2e8c2b Merge the ORTE devel branch into the main trunk. Details of what this means will be circulated separately.
Remains to be tested to ensure everything came over cleanly, so please continue to withhold commits a little longer

This commit was SVN r17632.
2008-02-28 01:57:57 +00:00

148 строки
4.0 KiB
C

/*
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/** @file:
*
* The Process Lifecycle Management (PLM) subsystem serves as the central
* switchyard for all process management activities, including
* resource allocation, process mapping, process launch, and process
* monitoring.
*/
#ifndef ORTE_PLM_H
#define ORTE_PLM_H
/*
* includes
*/
#include "orte_config.h"
#include "orte/types.h"
#include "opal/mca/mca.h"
#include "orte/runtime/orte_globals.h"
#include "plm_types.h"
BEGIN_C_DECLS
/*
* Component functions - all MUST be provided
*/
/*
* allow the selected module to initialize
*/
typedef int (*orte_plm_base_module_init_fn_t)(void);
/*
* Spawn a job
*/
typedef int (*orte_plm_base_module_spawn_fn_t)(orte_job_t *jdata);
/*
* Entry point to set the HNP name
*/
typedef int (*orte_plm_base_module_set_hnp_name_fn_t)(void);
/**
* Cleanup resources held by module.
*/
typedef int (*orte_plm_base_module_finalize_fn_t)(void);
/**
* Terminate any processes launched for the respective jobid by
* this component.
*/
typedef int (*orte_plm_base_module_terminate_job_fn_t)(orte_jobid_t);
/**
* Terminate the daemons
*/
typedef int (*orte_plm_base_module_terminate_orteds_fn_t)(void);
/**
* Signal any processes launched for the respective jobid by
* this component.
*/
typedef int (*orte_plm_base_module_signal_job_fn_t)(orte_jobid_t, int32_t);
/**
* plm module version 1.0.0
*/
struct orte_plm_base_module_1_0_0_t {
orte_plm_base_module_init_fn_t init;
orte_plm_base_module_set_hnp_name_fn_t set_hnp_name;
orte_plm_base_module_spawn_fn_t spawn;
orte_plm_base_module_terminate_job_fn_t terminate_job;
orte_plm_base_module_terminate_orteds_fn_t terminate_orteds;
orte_plm_base_module_signal_job_fn_t signal_job;
orte_plm_base_module_finalize_fn_t finalize;
};
/** shorten orte_plm_base_module_1_0_0_t declaration */
typedef struct orte_plm_base_module_1_0_0_t orte_plm_base_module_1_0_0_t;
/** shorten orte_plm_base_module_t declaration */
typedef struct orte_plm_base_module_1_0_0_t orte_plm_base_module_t;
/**
* plm initialization function
*
* Called by the MCA framework to initialize the component. Invoked
* exactly once per process.
*
* @param priority (OUT) Relative priority or ranking use by MCA to
* select a module.
*/
typedef struct orte_plm_base_module_1_0_0_t*
(*orte_plm_base_component_init_fn_t)(int *priority);
/**
* plm component v1.0.0
*/
struct orte_plm_base_component_1_0_0_t {
/** component version */
mca_base_component_t plm_version;
/** component data */
mca_base_component_data_1_0_0_t plm_data;
/** Function called when component is initialized */
orte_plm_base_component_init_fn_t plm_init;
};
/** Convenience typedef */
typedef struct orte_plm_base_component_1_0_0_t orte_plm_base_component_1_0_0_t;
/** Convenience typedef */
typedef orte_plm_base_component_1_0_0_t orte_plm_base_component_t;
/**
* Macro for use in modules that are of type plm v1.0.0
*/
#define ORTE_PLM_BASE_VERSION_1_0_0 \
/* plm v1.0 is chained to MCA v1.0 */ \
MCA_BASE_VERSION_1_0_0, \
/* plm v1.0 */ \
"plm", 1, 0, 0
/* Global structure for accessing PLM functions */
ORTE_DECLSPEC extern orte_plm_base_module_t orte_plm; /* holds selected module's function pointers */
END_C_DECLS
#endif