Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:47:25

0001 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
0002 /*
0003  * Copyright (c) 2007-2008 Cisco Systems, Inc.  All rights reserved.
0004  * Copyright (c) 2015-2020 Intel, Inc.  All rights reserved.
0005  *
0006  * Copyright (c) 2015      Research Organization for Information Science
0007  *                         and Technology (RIST). All rights reserved.
0008  * Copyright (c) 2021-2022 Nanook Consulting.  All rights reserved.
0009  * $COPYRIGHT$
0010  *
0011  * Additional copyrights may follow
0012  *
0013  * $HEADER$
0014  */
0015 
0016 /**
0017  * @file
0018  *
0019  * This interface is for use by PMIx servers to obtain network-related info
0020  * such as security keys that need to be shared across applications, and to
0021  * setup network support for applications prior to launch
0022  *
0023  * Available plugins may be defined at runtime via the typical MCA parameter
0024  * syntax.
0025  */
0026 
0027 #ifndef PMIX_PLOG_H
0028 #define PMIX_PLOG_H
0029 
0030 #include "src/include/pmix_config.h"
0031 #include "pmix_common.h"
0032 
0033 #include "src/class/pmix_list.h"
0034 #include "src/include/pmix_globals.h"
0035 #include "src/mca/base/pmix_mca_base_framework.h"
0036 #include "src/mca/base/pmix_mca_base_var.h"
0037 #include "src/mca/mca.h"
0038 
0039 BEGIN_C_DECLS
0040 
0041 /******    MODULE DEFINITION    ******/
0042 
0043 /**
0044  * Initialize the module. Returns an error if the module cannot
0045  * run, success if it can and wants to be used.
0046  */
0047 typedef pmix_status_t (*pmix_plog_base_module_init_fn_t)(void);
0048 
0049 /**
0050  * Finalize the module
0051  */
0052 typedef void (*pmix_plog_base_module_fini_fn_t)(void);
0053 
0054 /**
0055  * Log data to channel, if possible
0056  */
0057 typedef pmix_status_t (*pmix_plog_base_module_log_fn_t)(const pmix_proc_t *source,
0058                                                         const pmix_info_t data[], size_t ndata,
0059                                                         const pmix_info_t directives[],
0060                                                         size_t ndirs, pmix_op_cbfunc_t cbfunc,
0061                                                         void *cbdata);
0062 
0063 /**
0064  * Base structure for a PLOG module
0065  */
0066 typedef struct {
0067     char *name;
0068     char **channels;
0069     /* init/finalize */
0070     pmix_plog_base_module_init_fn_t init;
0071     pmix_plog_base_module_fini_fn_t finalize;
0072     pmix_plog_base_module_log_fn_t log;
0073 } pmix_plog_module_t;
0074 
0075 /**
0076  * Base structure for a PLOG API
0077  */
0078 typedef struct {
0079     pmix_plog_base_module_log_fn_t log;
0080 } pmix_plog_API_module_t;
0081 
0082 /* declare the global APIs */
0083 PMIX_EXPORT extern pmix_plog_API_module_t pmix_plog;
0084 
0085 /*
0086  * the standard component data structure
0087  */
0088 typedef pmix_mca_base_component_t pmix_plog_base_component_t;
0089 
0090 /*
0091  * Macro for use in components that are of type plog
0092  */
0093 #define PMIX_PLOG_BASE_VERSION_1_0_0 PMIX_MCA_BASE_VERSION_1_0_0("plog", 1, 0, 0)
0094 
0095 END_C_DECLS
0096 
0097 #endif