root/opal/mca/pmix/pmix4x/pmix/src/mca/psensor/base/psensor_base_frame.c

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

DEFINITIONS

This source file includes following definitions.
  1. pmix_psensor_register
  2. pmix_psensor_base_close
  3. pmix_psensor_base_open

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
   2 /*
   3  * Copyright (c) 2010      Cisco Systems, Inc.  All rights reserved.
   4  * Copyright (c) 2012-2013 Los Alamos National Security, Inc. All rights reserved.
   5  *
   6  * Copyright (c) 2017      Intel, Inc.  All rights reserved.
   7  * $COPYRIGHT$
   8  *
   9  * Additional copyrights may follow
  10  *
  11  * $HEADER$
  12  */
  13 
  14 
  15 #include <src/include/pmix_config.h>
  16 
  17 #include <pmix_common.h>
  18 
  19 #include <pthread.h>
  20 #include PMIX_EVENT_HEADER
  21 
  22 #include "src/mca/mca.h"
  23 #include "src/mca/base/base.h"
  24 #include "src/class/pmix_list.h"
  25 #include "src/runtime/pmix_progress_threads.h"
  26 #include "src/include/types.h"
  27 
  28 #include "src/mca/psensor/base/base.h"
  29 
  30 /*
  31  * The following file was created by configure.  It contains extern
  32  * statements and the definition of an array of pointers to each
  33  * component's public mca_base_component_t struct.
  34  */
  35 
  36 #include "src/mca/psensor/base/static-components.h"
  37 
  38 /*
  39  * Global variables
  40  */
  41 pmix_psensor_base_module_t pmix_psensor = {
  42     pmix_psensor_base_start,
  43     pmix_psensor_base_stop
  44 };
  45 pmix_psensor_base_t pmix_psensor_base = {{{0}}};
  46 
  47 static bool use_separate_thread = false;
  48 
  49 static int pmix_psensor_register(pmix_mca_base_register_flag_t flags)
  50 {
  51     (void) pmix_mca_base_var_register("pmix", "psensor", "base", "use_separate_thread",
  52                                       "Use a separate thread for monitoring local procs",
  53                                       PMIX_MCA_BASE_VAR_TYPE_BOOL, NULL, 0, 0,
  54                                       PMIX_INFO_LVL_9,
  55                                       PMIX_MCA_BASE_VAR_SCOPE_READONLY,
  56                                       &use_separate_thread);
  57     return PMIX_SUCCESS;
  58 }
  59 
  60 
  61 static int pmix_psensor_base_close(void)
  62 {
  63     PMIX_LIST_DESTRUCT(&pmix_psensor_base.actives);
  64 
  65     if (use_separate_thread && NULL != pmix_psensor_base.evbase) {
  66         (void)pmix_progress_thread_stop("PSENSOR");
  67     }
  68 
  69     /* Close all remaining available components */
  70     return pmix_mca_base_framework_components_close(&pmix_psensor_base_framework, NULL);
  71 }
  72 
  73 /**
  74  * Function for finding and opening either all MCA components, or the one
  75  * that was specifically requested via a MCA parameter.
  76  */
  77 static int pmix_psensor_base_open(pmix_mca_base_open_flag_t flags)
  78 {
  79     /* construct the list of modules */
  80     PMIX_CONSTRUCT(&pmix_psensor_base.actives, pmix_list_t);
  81 
  82     if (use_separate_thread) {
  83         /* create an event base and progress thread for us */
  84         if (NULL == (pmix_psensor_base.evbase = pmix_progress_thread_init("PSENSOR"))) {
  85             return PMIX_ERROR;
  86         }
  87 
  88     } else {
  89         pmix_psensor_base.evbase = pmix_globals.evbase;
  90     }
  91 
  92     /* Open up all available components */
  93     return pmix_mca_base_framework_components_open(&pmix_psensor_base_framework, flags);
  94 }
  95 
  96 PMIX_MCA_BASE_FRAMEWORK_DECLARE(pmix, psensor, "PMIx Monitoring Sensors",
  97                                 pmix_psensor_register,
  98                                 pmix_psensor_base_open, pmix_psensor_base_close,
  99                                 mca_psensor_base_static_components, 0);
 100 
 101 PMIX_CLASS_INSTANCE(pmix_psensor_active_module_t,
 102                     pmix_list_item_t,
 103                     NULL, NULL);

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