root/orte/mca/iof/hnp/iof_hnp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   3  *                         University Research and Technology
   4  *                         Corporation.  All rights reserved.
   5  * Copyright (c) 2004-2006 The University of Tennessee and The University
   6  *                         of Tennessee Research Foundation.  All rights
   7  *                         reserved.
   8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
   9  *                         University of Stuttgart.  All rights reserved.
  10  * Copyright (c) 2004-2005 The Regents of the University of California.
  11  *                         All rights reserved.
  12  * Copyright (c) 2007      Cisco Systems, Inc.  All rights reserved.
  13  * Copyright (c) 2016      Intel, Inc. All rights reserved.
  14  * $COPYRIGHT$
  15  *
  16  * Additional copyrights may follow
  17  *
  18  * $HEADER$
  19  */
  20 /**
  21  * @file
  22  *
  23  * The hnp IOF component is used in HNP processes only.  It is the
  24  * "hub" for all IOF activity, meaning that *all* IOF traffic is
  25  * routed to the hnp component, and this component figures out where
  26  * it is supposed to go from there.  Specifically: there is *no*
  27  * direct proxy-to-proxy IOF communication.  If a proxy/orted wants to
  28  * get a stream from another proxy/orted, the stream will go
  29  * proxy/orted -> HNP -> proxy/orted.
  30  *
  31  * The hnp IOF component does two things: 1. forward fragments between
  32  * file descriptors and streams, and 2. maintain forwarding tables to
  33  * "route" incoming fragments to outgoing destinations (both file
  34  * descriptors and other published streams).
  35  *
  36  */
  37 
  38 #ifndef ORTE_IOF_HNP_H
  39 #define ORTE_IOF_HNP_H
  40 
  41 #include "orte_config.h"
  42 
  43 #ifdef HAVE_SYS_TYPES_H
  44 #include <sys/types.h>
  45 #endif  /* HAVE_SYS_TYPES_H */
  46 #ifdef HAVE_SYS_UIO_H
  47 #include <sys/uio.h>
  48 #endif  /* HAVE_SYS_UIO_H */
  49 #ifdef HAVE_NET_UIO_H
  50 #include <net/uio.h>
  51 #endif  /* HAVE_NET_UIO_H */
  52 
  53 #include "orte/mca/iof/iof.h"
  54 #include "orte/mca/iof/base/base.h"
  55 
  56 
  57 BEGIN_C_DECLS
  58 
  59 /**
  60  * IOF HNP Component
  61  */
  62 struct orte_iof_hnp_component_t {
  63     orte_iof_base_component_t super;
  64     opal_list_t procs;
  65     orte_iof_read_event_t *stdinev;
  66     opal_event_t stdinsig;
  67 };
  68 typedef struct orte_iof_hnp_component_t orte_iof_hnp_component_t;
  69 
  70 ORTE_MODULE_DECLSPEC extern orte_iof_hnp_component_t mca_iof_hnp_component;
  71 extern orte_iof_base_module_t orte_iof_hnp_module;
  72 
  73 void orte_iof_hnp_recv(int status, orte_process_name_t* sender,
  74                        opal_buffer_t* buffer, orte_rml_tag_t tag,
  75                        void* cbdata);
  76 
  77 void orte_iof_hnp_read_local_handler(int fd, short event, void *cbdata);
  78 void orte_iof_hnp_stdin_cb(int fd, short event, void *cbdata);
  79 bool orte_iof_hnp_stdin_check(int fd);
  80 
  81 int orte_iof_hnp_send_data_to_endpoint(orte_process_name_t *host,
  82                                        orte_process_name_t *target,
  83                                        orte_iof_tag_t tag,
  84                                        unsigned char *data, int numbytes);
  85 
  86 END_C_DECLS
  87 
  88 #endif

/* [<][>][^][v][top][bottom][index][help] */