1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 SAF_Field *
 saf_find_default_coords(SAF_ParMode pmode,      /* The parallel mode */
                         SAF_Set *base,          /* The set for which the default coordinate field is returned */
                         SAF_Field *field        /* [OUT] The returned field handle, if found, otherwise SAF_NOT_SET_FIELD */
                         )
 {
     SAF_ENTER(saf_find_default_coords, NULL);

     SAF_REQUIRE(_saf_valid_pmode(pmode), SAF_LOW_CHK_COST, NULL,
                 _saf_errmsg("PMODE must be valid"));
     if (!_saf_is_participating_proc(pmode)) SAF_RETURN(NULL);

     SAF_REQUIRE(SS_SET(base), SAF_LOW_CHK_COST, NULL,
                 _saf_errmsg("BASE must be a valid set handle for participating processes"));

     if (!field && NULL==(field=malloc(sizeof *field)))
         SAF_ERROR(NULL, _saf_errmsg("unable to allocate return value"));
     *field = SS_SET(base)->dflt_coordfld;

     SAF_LEAVE(field);
 }