OpenMPI  0.1.1
iof_orted.h File Reference

The orted IOF component is used in daemons. More...

#include "orte_config.h"
#include "opal/class/opal_list.h"
#include "orte/mca/rml/rml_types.h"
#include "orte/mca/iof/iof.h"

Go to the source code of this file.

Data Structures

struct  orte_iof_orted_component_t
 IOF ORTED Component. More...
 

Typedefs

typedef struct
orte_iof_orted_component_t 
orte_iof_orted_component_t
 

Functions

void orte_iof_orted_recv (int status, orte_process_name_t *sender, opal_buffer_t *buffer, orte_rml_tag_t tag, void *cbdata)
 
void orte_iof_orted_read_handler (int fd, short event, void *data)
 
void orte_iof_orted_send_xonxoff (orte_iof_tag_t tag)
 

Variables

ORTE_MODULE_DECLSPEC
orte_iof_orted_component_t 
mca_iof_orted_component
 
orte_iof_base_module_t orte_iof_orted_module
 

Detailed Description

The orted IOF component is used in daemons.

It is used to orted all IOF actions back to the "hnp" IOF component (i.e., the IOF component that runs in the HNP). The orted IOF component is loaded in an orted and then tied to the stdin, stdout, and stderr streams of created child processes via pipes. The orted IOF component in the orted then acts as the relay between the stdin/stdout/stderr pipes and the IOF component in the HNP. This design allows us to manipulate stdin/stdout/stderr from before main() in the child process.

Much of the intelligence of this component is actually contained in iof_base_endpoint.c (reading and writing to local file descriptors, setting up events based on file descriptors, etc.).

A non-blocking OOB receive is posted at the initialization of this component to receive all messages from the HNP (e.g., data fragments from streams, ACKs to fragments).

Flow control is employed on a per-stream basis to ensure that SOURCEs don't overwhelm SINK resources (E.g., send an entire input file to an orted before the target process has read any of it).