1
1

Add a couple of new functions to the schema framework to check if a trigger is a "standard" trigger or not, and to extract a jobid from a standard trigger. Both functions will be used in a later commit.

Ensure that the seed set_my_name function sets all the right initial info in the name services' structures.

This commit was SVN r6760.
Этот коммит содержится в:
Ralph Castain 2005-08-07 13:26:49 +00:00
родитель c530521a8e
Коммит e583f6a97f
5 изменённых файлов: 62 добавлений и 6 удалений

Просмотреть файл

@ -64,6 +64,9 @@ int orte_schema_base_store_my_info(void);
int orte_schema_base_get_std_trigger_name(char **name, int orte_schema_base_get_std_trigger_name(char **name,
char *trigger, char *trigger,
orte_jobid_t jobid); orte_jobid_t jobid);
bool orte_schema_base_check_std_trigger_name(char *name, char *trig);
int orte_schema_base_extract_jobid_from_std_trigger_name(orte_jobid_t *jobid,
char *trig);
int orte_schema_base_get_std_subscription_name(char **name, int orte_schema_base_get_std_subscription_name(char **name,
char *subscription, char *subscription,
orte_jobid_t jobid); orte_jobid_t jobid);

Просмотреть файл

@ -300,6 +300,40 @@ int orte_schema_base_get_std_trigger_name(char **name,
return ORTE_SUCCESS; return ORTE_SUCCESS;
} }
bool orte_schema_base_check_std_trigger_name(char *name, char *trig)
{
if (NULL == name || NULL == trig) {
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
return false;
}
if (0 == strncmp(name, trig, strlen(trig))) return true;
return false;
}
int orte_schema_base_extract_jobid_from_std_trigger_name(orte_jobid_t *jobid, char *trig)
{
char *jobstring;
orte_jobid_t job;
int rc;
jobstring = strrchr(trig, '-');
if (NULL == jobstring) {
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
return ORTE_ERR_BAD_PARAM;
}
jobstring++;
if (ORTE_SUCCESS != (rc = orte_ns.convert_string_to_jobid(&job, jobstring))) {
ORTE_ERROR_LOG(rc);
return rc;
}
*jobid = job;
return ORTE_SUCCESS;
}
int orte_schema_base_get_std_subscription_name(char **name, int orte_schema_base_get_std_subscription_name(char **name,
char *subscription, char *subscription,
orte_jobid_t jobid) orte_jobid_t jobid)

Просмотреть файл

@ -45,6 +45,8 @@ OMPI_DECLSPEC orte_schema_base_module_t orte_schema = {
orte_schema_base_extract_jobid_from_segment_name, orte_schema_base_extract_jobid_from_segment_name,
orte_schema_base_store_my_info, orte_schema_base_store_my_info,
orte_schema_base_get_std_trigger_name, orte_schema_base_get_std_trigger_name,
orte_schema_base_check_std_trigger_name,
orte_schema_base_extract_jobid_from_std_trigger_name,
orte_schema_base_get_std_subscription_name orte_schema_base_get_std_subscription_name
}; };

Просмотреть файл

@ -62,6 +62,11 @@ typedef int (*orte_schema_get_std_trigger_name_fn_t)(char **name,
char *trigger, char *trigger,
orte_jobid_t jobid); orte_jobid_t jobid);
typedef int (*orte_schema_extract_jobid_from_std_trigger_name_fn_t)(orte_jobid_t *jobid,
char *trigger);
typedef bool (*orte_schema_check_std_trigger_name_fn_t)(char *name, char *trigger);
typedef int (*orte_schema_get_std_subscription_name_fn_t)(char **name, typedef int (*orte_schema_get_std_subscription_name_fn_t)(char **name,
char *subscription, char *subscription,
orte_jobid_t jobid); orte_jobid_t jobid);
@ -79,6 +84,8 @@ struct orte_schema_base_module_1_0_0_t {
orte_schema_extract_jobid_from_segment_name_fn_t extract_jobid_from_segment_name; orte_schema_extract_jobid_from_segment_name_fn_t extract_jobid_from_segment_name;
orte_schema_store_my_info_fn_t store_my_info; orte_schema_store_my_info_fn_t store_my_info;
orte_schema_get_std_trigger_name_fn_t get_std_trigger_name; orte_schema_get_std_trigger_name_fn_t get_std_trigger_name;
orte_schema_check_std_trigger_name_fn_t check_std_trigger_name;
orte_schema_extract_jobid_from_std_trigger_name_fn_t extract_jobid_from_std_trigger_name;
orte_schema_get_std_subscription_name_fn_t get_std_subscription_name; orte_schema_get_std_subscription_name_fn_t get_std_subscription_name;
}; };

Просмотреть файл

@ -124,16 +124,26 @@ orte_sds_base_basic_contact_universe(void)
int int
orte_sds_base_seed_set_name(void) orte_sds_base_seed_set_name(void)
{ {
int id, flag; int id, flag, rc;
/* if we're a seed and we're not infrastructure, we're also a /* if we're a seed and we're not infrastructure, we're also a
singleton. So set the singleton flag in that case */ singleton. So set the singleton flag in that case */
id = mca_base_param_register_int("orte", "base", "infrastructure", id = mca_base_param_reg_int_name("orte_base", "infrastructure",
NULL, (int)false); "Whether we are ORTE infrastructure or an ORTE application",
false, false, (int)false, NULL);;
mca_base_param_lookup_int(id, &flag); mca_base_param_lookup_int(id, &flag);
if (!flag) { if (!flag) {
orte_process_info.singleton = true; orte_process_info.singleton = true;
} }
return orte_ns_base_create_process_name( /* now need to create our name in a manner that puts our job info on the name service
&(orte_process_info.my_name), 0, 0, 0); * tracker. This is necessary so that
* functions like get_job_peers will work. Since we are the seed, these
* functions will always return the proper jobid=0, vpid=0 values
*/
if (ORTE_SUCCESS != (rc = orte_ns.create_my_name())) {
ORTE_ERROR_LOG(rc);
return rc;
}
return ORTE_SUCCESS;
} }