1
1
openmpi/orte/tools/console/orteconsole.h

122 строки
3.6 KiB
C

/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 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$
*/
#ifndef ORTECONSOLE_H
#define ORTECONSOLE_H
#include "orte_config.h"
#include "opal/class/opal_list.h"
#include "opal/threads/mutex.h"
#include "opal/threads/condition.h"
#include "orte/mca/odls/odls_types.h"
#include "orte/tools/orted/orted.h"
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
#define ORTE_CONSOLE_MAX_LINE_LENGTH 1024
#define ORTE_CONSOLE_MAX_ARGC 10
/*
* Local Structures
*/
/* Command line Structure */
typedef struct {
bool help;
char *hostfile;
opal_mutex_t lock;
opal_condition_t cond;
} orte_console_globals_t;
/* Console Command Types */
enum orte_console_type_t {
ORTE_CONSOLE_TYPE_NULL,
ORTE_CONSOLE_TYPE_STD,
ORTE_CONSOLE_TYPE_HIDDEN
};
typedef enum orte_console_type_t orte_console_type_t;
/* Contained parsed user input */
typedef struct {
/* Command Name */
char * cmd_name;
char ** argv;
int argc;
} orte_console_input_command_t;
/* Structure detailing each command allowed by the console */
typedef struct {
/* Full Name for the command */
const char * cmd_full_name;
/* Common abbreviation for this command */
const char * cmd_short_name;
/* Number of expected additional arguments */
int cmd_args;
/* Type of command */
orte_console_type_t cmd_type;
/* Pointer to the function to execute */
int (*cmd_function) (orte_console_input_command_t);
/* Short illustration of how the command should be used */
const char * cmd_usage;
/* Short description of what this command does */
const char * cmd_description;
} orte_console_command_t;
/* Local list of allocated hosts */
static opal_list_t orte_console_hosts;
/*
* Function for each command
*/
static int orte_console_exit(orte_console_input_command_t);
static int orte_console_help(orte_console_input_command_t);
static int orte_console_boot_daemons(orte_console_input_command_t);
static int orte_console_add_host(orte_console_input_command_t);
static int orte_console_remove_host(orte_console_input_command_t);
static int orte_console_display_configuration(orte_console_input_command_t);
static int orte_console_halt(orte_console_input_command_t);
static int orte_console_contactinfo(orte_console_input_command_t);
static int orte_console_not_imp(orte_console_input_command_t);
static int orte_console_dump(orte_console_input_command_t);
static int orte_console_ps(orte_console_input_command_t);
/*
* Support Functions
*/
static char *orte_console_get_input_line(void);
static int orte_console_send_command(orte_daemon_cmd_flag_t usercmd);
static int orte_console_parse_command(char * usercmd, orte_console_input_command_t *input_command);
static int orte_console_execute_command(orte_console_input_command_t command);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
#endif /* ORTECONSOLE_H */