@@ -155,6 +155,7 @@ typedef uint32_t pmix_rank_t;
155155#define  PMIX_TDIR_RMCLEAN                    "pmix.tdir.rmclean"     // (bool)  Resource Manager will clean session directories
156156
157157/* information about relative ranks as assigned by the RM */ 
158+ #define  PMIX_NSPACE                          "pmix.nspace"           // (char*) nspace of a job
158159#define  PMIX_JOBID                           "pmix.jobid"            // (char*) jobid assigned by scheduler
159160#define  PMIX_APPNUM                          "pmix.appnum"           // (uint32_t) app number within the job
160161#define  PMIX_RANK                            "pmix.rank"             // (pmix_rank_t) process rank within the job
@@ -275,16 +276,20 @@ typedef uint32_t pmix_rank_t;
275276                                                                     //     returns (pmix_data_array_t) an array of pmix_proc_info_t for 
276277                                                                     //     procs in job on same node 
277278#define  PMIX_QUERY_AUTHORIZATIONS            "pmix.qry.auths"         // return operations tool is authorized to perform"
279+ #define  PMIX_QUERY_SPAWN_SUPPORT             "pmix.qry.spawn"         // return a comma-delimited list of supported spawn attributes
280+ #define  PMIX_QUERY_DEBUG_SUPPORT             "pmix.qry.debug"         // return a comma-delimited list of supported debug attributes
278281
279282/* log attributes */ 
280283#define  PMIX_LOG_STDERR                      "pmix.log.stderr"        // (bool) log data to stderr
281284#define  PMIX_LOG_STDOUT                      "pmix.log.stdout"        // (bool) log data to stdout
282285#define  PMIX_LOG_SYSLOG                      "pmix.log.syslog"        // (bool) log data to syslog - defaults to ERROR priority unless
283286                                                                     //        modified by directive 
284287/* debugger attributes */ 
285- #define  PMIX_SPAWN_UNDER_DEBUGGER            "pmix.dbg.pause"         // (bool) job is being spawned under debugger - instruct it to pause on start
286- #define  PMIX_JOB_BEING_DEBUGGED              "pmix.dbg.job"           // (char*) nspace of the job to be debugged - the RM/PMIx server are
287-                                                                      //     to provide the job-level info of that job to each debugger daemon 
288+ #define  PMIX_DEBUG_STOP_ON_EXEC              "pmix.dbg.exec"          // (bool) job is being spawned under debugger - instruct it to pause on start
289+ #define  PMIX_DEBUG_STOP_IN_INIT              "pmix.dbg.init"          // (bool) instruct job to stop during PMIx init
290+ #define  PMIX_DEBUG_WAIT_FOR_NOTIFY           "pmix.dbg.notify"        // (bool) block at desired point until receiving debugger release notification
291+ #define  PMIX_DEBUG_JOB                       "pmix.dbg.job"           // (char*) nspace of the job to be debugged - the RM/PMIx server are
292+ #define  PMIX_DEBUG_WAITING_FOR_NOTIFY        "pmix.dbg.waiting"       // (bool) job to be debugged is waiting for a release
288293
289294/****    PROCESS STATE DEFINITIONS    ****/ 
290295typedef  uint8_t  pmix_proc_state_t ;
@@ -581,18 +586,17 @@ typedef struct pmix_proc_info {
581586
582587
583588/****    PMIX VALUE STRUCT    ****/ 
589+ typedef  struct  pmix_info_t  pmix_info_t ;
590+ 
584591typedef  struct  pmix_data_array  {
585592    pmix_data_type_t  type ;
586593    size_t  size ;
587594    void  * array ;
588595} pmix_data_array_t ;
589596
590- /**** DEPRECATED ****/ 
591- struct  pmix_info ;
592- 
593597typedef  struct  pmix_info_array  {
594598    size_t  size ;
595-     struct   pmix_info  * array ;
599+     pmix_info_t  * array ;
596600} pmix_info_array_t ;
597601/********************/ 
598602
@@ -754,23 +758,29 @@ typedef struct pmix_value {
754758        }                                               \
755759    } while (0)
756760
757- /* expose two  functions that are resolved in the 
761+ /* expose some  functions that are resolved in the 
758762 * PMIx library, but part of a header that 
759763 * includes internal functions - we don't 
760764 * want to expose the entire header here 
761765 */ 
762766void  pmix_value_load (pmix_value_t  * v , void  * data , pmix_data_type_t  type );
763767pmix_status_t  pmix_value_xfer (pmix_value_t  * kv , pmix_value_t  * src );
768+ pmix_status_t  pmix_argv_append_nosize (char  * * * argv , const  char  * arg );
769+ pmix_status_t  pmix_setenv (const  char  * name , const  char  * value ,
770+                               bool  overwrite , char  * * * env );
764771
765- 
772+ #define  PMIX_ARGV_APPEND (a , b ) \
773+     pmix_argv_append_nosize(&(a), (b))
774+ #define  PMIX_SETENV (a , b , c ) \
775+     pmix_setenv((a), (b), true, (c))
766776
767777
768778/****    PMIX INFO STRUCT    ****/ 
769- typedef   struct  pmix_info  {
779+ struct  pmix_info_t  {
770780    char  key [PMIX_MAX_KEYLEN + 1 ];    // ensure room for the NULL terminator 
771781    pmix_info_directives_t  flags ;   // bit-mask of flags 
772782    pmix_value_t  value ;
773- }  pmix_info_t ;
783+ };
774784
775785/* utility macros for working with pmix_info_t structs */ 
776786#define  PMIX_INFO_CREATE (m , n )                                  \
@@ -874,9 +884,9 @@ typedef struct pmix_pdata {
874884/****    PMIX APP STRUCT    ****/ 
875885typedef  struct  pmix_app  {
876886    char  * cmd ;
877-     int  argc ;
878887    char  * * argv ;
879888    char  * * env ;
889+     char  * cwd ;
880890    int  maxprocs ;
881891    pmix_info_t  * info ;
882892    size_t  ninfo ;
@@ -916,6 +926,9 @@ typedef struct pmix_app {
916926            }                                                   \
917927            free((m)->env);                                     \
918928        }                                                       \
929+         if (NULL != (m)->cwd) {                                 \
930+             free((m)->cwd);                                     \
931+         }                                                       \
919932        if (NULL != (m)->info) {                                \
920933            for (_ii=0; _ii < (m)->ninfo; _ii++) {              \
921934                PMIX_INFO_DESTRUCT(&(m)->info[_ii]);            \
0 commit comments