| | 255 | | | | | | gs_hash_name(name, hash_list, ngroups, create) | | | 256 | | | | | | char *name; | | | 257 | | | | | | GROUP_LIST_PTR hash_list; | | | 258 | | | | | | int *ngroups; | | | 259 | | | | | | int create; | | | 260 | | | | | | { | | | 261 | | | | | | char *key; | | | 262 | | | | | | | | | 263 | | | | | | int hash_index; | | | 264 | | | | | | int len = 0; | | | 265 | | | | | | int match; | | | 266 | | | | | | int relation; | | | 267 | | | | | | int sum = 0; | | | 268 | | | | | | | | | 269 | | | | | | GROUP_LIST_PTR current; | | | 270 | | | | | | GROUP_LIST_PTR listentry; | | | 271 | | | | | | GROUP_LIST_PTR prev; | | | 272 | | | | | | | | | 273 | | | | | | GROUP_STRUCT_PTR group; | | | 274 | | | | | | | | | 275 | | | | | | if (name == (char *) NULL || *name == '\0')
| | | 276 | | | | | | return( (GROUP_LIST_PTR) NULL);
| | | 277 | | | | | | | | | 278 | | | | | | | | | 279 | | | | | | key = name; | | | 280 | | | | | | while (*key != '\0') | | | 281 | | | | | | { | | | 282 | | | | | | sum += INTERVAL(MINCHAR, *key, MAXCHAR);
| | | 283 | | | | | | key++; | | | 284 | | | | | | len++; | | | 285 | | | | | | } | | | 286 | | | | | | | | | 287 | | | | | | hash_index = sum/len; | | | 288 | | | | | | hash_index = hash_index - MINCHAR;
| | | 289 | | | | | | | | | 290 | | | | | | | | | 291 | | | | | | | | | 292 | | | | | | | | | 293 | | | | | | | | | 294 | | | | | | prev = hash_list + hash_index; | | | 295 | | | | | | current = prev->next; | | | 296 | | | | | | listentry = (GROUP_LIST_PTR) NULL;
| | | 297 | | | | | | | | | 298 | | | | | | while (current != (GROUP_LIST_PTR) NULL )
| | | 299 | | | | | | { | | | 300 | | | | | | relation = strncmp(name, current->group->name, | | | 301 | | | | | | MAX(current->group->len,len));
| | | 302 | | | | | | | | | 303 | | | | | | if ( relation == 0 ) | | | 304 | | | | | | { | | | 305 | | | | | | listentry = current; | | | 306 | | | | | | break; | | | 307 | | | | | | } | | | 308 | | | | | | | | | 309 | | | | | | if (relation < 0) | | | 310 | | | | | | break; | | | 311 | | | | | | | | | 312 | | | | | | prev = current; | | | 313 | | | | | | | | | 314 | | | | | | current = current->next; | | | 315 | | | | | | } | | | 316 | | | | | | | | | 317 | | | | | | if (create != CREATE || listentry != (GROUP_LIST_PTR) NULL)
| | true | 318 | | | | | | return listentry; | | | 319 | | | | | | | | | 320 | | | | | | | | | 321 | | | | | | | | | 322 | | | | | | if ( (group = gs_struct_init(name)) == (GROUP_STRUCT_PTR) NULL)
| | | 323 | | | | | | return (GROUP_LIST_PTR) NULL;
| | | 324 | | | | | | | | | 325 | | | | | | listentry = gs_list_insert(group, prev, current); | | | 326 | | | | | | | | | 327 | | | | | | if (listentry != (GROUP_LIST_PTR) NULL)
| | | 328 | | | | | | (*ngroups)++; | | | 329 | | | | | | | | | 330 | | | | | | return(listentry); | | | 331 | | | | | | } |
| | 806 | | if (group == (GROUP_STRUCT_PTR) NULL)
| | | 807 | | return(PvmNoGroup);
| | | 808 | | | | | 809 | | if (group->staticgroup == STATICDEAD)
| | | 810 | | return(PvmNoGroup);
| | | 811 | | | | | 812 | | for (i = 0; i < group->maxntids; i++) | | | 813 | | if (group->tids[i] == tid) break; | | | 814 | | if (i == group->maxntids) | | | 815 | | return(PvmNotInGroup);
| | | 816 | | | | | 817 | | | | | 818 | | if (cnt == -1) | | | 819 | | cnt = group->ntids; | | | 820 | | | | | 821 | | if (group->barrier_count == -1) | | | 822 | | { | | | 823 | | group->barrier_count = cnt; | | | 824 | | group->barrier_reached = 0; | | true | 825 | | group->barrier_index = 0; | | | 826 | | } | | | 827 | | else | | | 828 | | { | | | 829 | | if (cnt != group->barrier_count) | | | 830 | | return(PvmMismatch);
| | | 831 | | } | | | 832 | | | | | 833 | | | | &$unknown_13713118 >= 4 | 834 | | group->btids = gs_realloc_int_array(group->barrier_index + 1, | | &$unknown_13713106 >= 4 | 835 | | &(group->maxbtids), group->btids, DELTABTIDS, NOTID,
| | &$unknown_13713103 >= 4 | 836 | | "gs_barrier"); | | | 837 | | | | &$unknown_13713130 > bytes_after(group->btids) | 838 | | group->btids[group->barrier_index++] = tid; | Problem | | &$unknown_13713130 > bytes_after(group->btids) |
| | | 839 | | | | &$unknown_13713139 > bytes_after(group->btids) | 840 | | if (msgtag == BARRIER) | Problem | | &$unknown_13713139 > bytes_after(group->btids) |
| | | 841 | | group->barrier_reached++; | | &$unknown_13713142 > bytes_after(group->btids) | 842 | | else | Problem | | &$unknown_13713142 > bytes_after(group->btids) |
| | | 843 | | | | | 844 | | | | | 845 | | { | | &$unknown_13713157 > bytes_after(group->btids) | 846 | | gs_host_char(gname, hash_list, ngroups, gs_tidtohost(tid), | Problem | | &$unknown_13713157 > bytes_after(group->btids) |
| | &$unknown_13713145 > bytes_after(group->btids) | 847 | | &pcoord, &nmem_onhost, &nhosts, &gstate); | Problem | | &$unknown_13713145 > bytes_after(group->btids) |
| | | 848 | | | | &$unknown_13713202 > bytes_after(group->btids) | 849 | | group->barrier_reached += nmem_onhost; | Problem | | &$unknown_13713202 > bytes_after(group->btids) |
| | | 850 | | } | | | 851 | | | | | 852 | | | | | 853 | | | | | 854 | | | | &$unknown_13713205 > bytes_after(group->btids) | 855 | | if (group->barrier_count < group->barrier_reached) | Problem | | &$unknown_13713205 > bytes_after(group->btids) |
| | | 856 | | return(PvmMismatch);
| | | 857 | | | | | 858 | | | | &$unknown_13713208 > bytes_after(group->btids) | 859 | | if (group->barrier_count != group->barrier_reached) | Problem | | &$unknown_13713208 > bytes_after(group->btids) |
| | | 860 | | return(PvmOk);
| | | 861 | | | | | 862 | | | | &$unknown_13713211 > bytes_after(group->btids) | 863 | | pvm_initsend(PvmDataDefault); | Problem | | &$unknown_13713211 > bytes_after(group->btids) |
| | &$unknown_13713217 > bytes_after(group->btids) | 864 | | pvm_pkint(&(group->barrier_count), 1, 1); | Problem | | &$unknown_13713217 > bytes_after(group->btids) |
|
| &$unknown_13713230 > bytes_after(tids) | 2298 | | | | pvm_mcast(tids, count, tag) | Problem | | &$unknown_13713230 > bytes_after(tids) |
| | | 2299 | | | | int *tids; | | | 2300 | | | | int count; | | | 2301 | | | | int tag; | | | 2302 | | | | { | | | 2303 | | | | int cc; | | | 2304 | | | | int i; | | &$unknown_13713231 > bytes_after(tids) | 2305 | | | | TEV_DECLS | Problem | | &$unknown_13713231 > bytes_after(tids) |
| | | 2306 | | | | | | &$unknown_13713232 > bytes_after(tids) | 2307 | | | | if (TEV_EXCLUSIVE) { | Problem | | &$unknown_13713232 > bytes_after(tids) |
| | &$unknown_13713236 > bytes_after(tids) | 2308 | | | | if (TEV_DO_TRACE(TEV_MCAST,TEV_EVENT_ENTRY)) { | Problem | | &$unknown_13713236 > bytes_after(tids) |
| | | 2309 | | | | int nb = -1; | | | 2310 | | | | pvm_bufinfo( | | | 2311 | | | | ( pvmtrcsbfsave ) ? pvmtrcsbfsave : pvmsbuf->m_mid, | | | 2312 | | | | &nb, (int *) NULL, (int *) NULL );
| | | 2313 | | | | TEV_PACK_INT( TEV_DID_MNB, TEV_DATA_SCALAR, &nb, 1, 1 );
| | | 2314 | | | | TEV_PACK_INT( TEV_DID_MC, TEV_DATA_SCALAR, &tag, 1, 1 );
| | | 2315 | | | | TEV_PACK_INT( TEV_DID_MCX, TEV_DATA_SCALAR,
| | | 2316 | | | | &pvmmyctx, 1, 1 ); | | | 2317 | | | | TEV_PACK_INT( TEV_DID_MDL, TEV_DATA_ARRAY, tids, count, 1 );
| | | 2318 | | | | TEV_FIN;
| | | 2319 | | | | } | | | 2320 | | | | } | | | 2321 | | | | | | | 2322 | | | | | | | 2323 | | | | | | &$unknown_13713241 > bytes_after(tids) | 2324 | | | | if (!(cc = BEATASK)) { | Problem | | &$unknown_13713241 > bytes_after(tids) |
| | &$unknown_13713245 > bytes_after(tids) | 2325 | | | | if (!pvmsbuf) | Problem | | &$unknown_13713245 > bytes_after(tids) |
| | | 2326 | | | | cc = PvmNoBuf;
| | &$unknown_13713246 > bytes_after(tids) | 2327 | | | | else if (count < 0 || (!pvmrescode && (tag & ~0x7fffffff))) | Problem | | &$unknown_13713246 > bytes_after(tids) |
| | | 2328 | | | | cc = PvmBadParam;
| | &$unknown_13713249 > bytes_after(tids) | 2329 | | | | else if (!pvmrescode) | Problem | | &$unknown_13713249 > bytes_after(tids) |
| | | 2330 | | | | for (i = count; i-- > 0; ) | | | 2331 | | | | if (!TIDISTASK(tids[i])) {
| | | 2332 | | | | cc = PvmBadParam;
| | | 2333 | | | | break; | | | 2334 | | | | } | | | 2335 | | | | | | | 2336 | | | | } | | | 2337 | | | | | | &$unknown_13713251 > bytes_after(tids) | 2338 | | | | if (!cc && count > 0) | Problem | | &$unknown_13713251 > bytes_after(tids) |
|
|