| | 786 | | gs_barrier(gname, msgtag, cnt, tid, hash_list, ngroups) | | | 787 | | char *gname; | | | 788 | | int msgtag; | | | 789 | | int cnt; | | | 790 | | int tid; | | | 791 | | GROUP_LIST_PTR hash_list; | | | 792 | | int *ngroups; | | | 793 | | { | | | 794 | | int i, info; | | | 795 | | int gstate; | | | 796 | | int pcoord; | | | 797 | | int nhosts, nmem_onhost; | | | 798 | | | | | 799 | | GROUP_STRUCT_PTR group; | | | 800 | | | | | 801 | | | | | 802 | | if (gname == (char*) 0 || *gname == '\0') | | | 803 | | return(PvmNullGroup);
| | | 804 | | | | | 805 | | group = gs_group(gname, hash_list, ngroups, NOCREATE);
| | | 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; | | | 825 | | group->barrier_index = 0; | | | 826 | | } | | | 827 | | else | | | 828 | | { | | | 829 | | if (cnt != group->barrier_count) | | | 830 | | return(PvmMismatch);
| | | 831 | | } | | | 832 | | | | | 833 | | | | | 834 | | group->btids = gs_realloc_int_array(group->barrier_index + 1, | | | 835 | | &(group->maxbtids), group->btids, DELTABTIDS, NOTID,
|
| | 53 | | | | int * | | | 54 | | | | gs_realloc_int_array(nelems, maxelems, array, inc, init, caller) | | | 55 | | | | int nelems; | | | 56 | | | | int *maxelems; | | | 57 | | | | int *array; | | | 58 | | | | int inc; | | | 59 | | | | int init; | | | 60 | | | | char *caller; | | | 61 | | | | { | | | 62 | | | | int i; | | | 63 | | | | int *newarray, *newvalue; | | | 64 | | | | int oldmax; | | | 65 | | | | int *value; | | | 66 | | | | | | | 67 | | | | if (nelems <= *maxelems) | | | 68 | | | | return(array); | | | 69 | | | | | | | 70 | | | | newarray = array; | | | 71 | | | | | | | 72 | | | | oldmax = *maxelems; | | | 73 | | | | | | | 74 | | | | *maxelems += inc; | | | 75 | | | | | | | 76 | | | | if ( (newarray = (int *) PVM_ALLOC(sizeof(int) * (*maxelems), caller))
| | true | 77 | | | | == (int *) NULL)
| | | 78 | | | | { | | $unknown_81013485 <= 4095 | 79 | | | | fprintf(stderr, "could not allocate memory: %s\n", caller); | | $unknown_81013493 <= 4095 | 80 | | | | return(newarray); | | | 81 | | | | } | | | 82 | | | | | | | 83 | | | | | | | 84 | | | | | | | 85 | | | | if (oldmax > 0) | | | 86 | | | | BCOPY(array, newarray, oldmax*sizeof(int));
| | | 87 | | | | | | | 88 | | | | newvalue = newarray+oldmax; | | | 89 | | | | | | | 90 | | | | for (i = oldmax; i < *maxelems; i++) | | | 91 | | | | *newvalue++ = init; | | | 92 | | | | | | | 93 | | | | if (array != (int *) NULL)
| | | 94 | | | | PVM_FREE(array);
| | | 95 | | | | | | | 96 | | | | return(newarray); | | gs_realloc_int_array$return <= 4095 | 97 | | | | } | Problem | | gs_realloc_int_array$return <= 4095 |
|
|