@@ -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