| | 719 | | gs_tidlist(gname, holes_not_allowed, hash_list, ngroups, gstate) |
| | 720 | | char *gname; |
| | 721 | | int holes_not_allowed; |
| | 722 | | GROUP_LIST_PTR hash_list; |
| | 723 | | int *ngroups, *gstate; |
| | 724 | | { |
| | 725 | | int i; |
| | 726 | | int cnt; |
| | 727 | | int gi; |
| | 728 | | int hole_exists = 0; |
| | 729 | | int ntids; |
| | 730 | | int *tids; |
| | 731 | | |
| | 732 | | GROUP_STRUCT_PTR group; |
| | 733 | | |
| | 734 | | *gstate = DYNAMIC;
|
| | 735 | | |
| | 736 | | |
| | 737 | | if (gname == (char*) 0 || *gname == '\0') |
| | 738 | | return(PvmNullGroup);
|
| | 739 | | |
| | 740 | | group = gs_group(gname, hash_list, ngroups, NOCREATE);
|
| | 741 | | if (group == (GROUP_STRUCT_PTR) NULL)
|
| | 742 | | return(PvmNoGroup);
|
| | 743 | | |
| | 744 | | if (group->staticgroup == STATICDEAD)
|
| | 745 | | return(PvmNoGroup);
|
| | 746 | | |
| | 747 | | ntids = group->ntids; |
| | 748 | | |
| referenced by returned value | 749 | | if ( (tids = (int *) PVM_ALLOC(group->ntids * sizeof(int), "gs_tidlist()")) | Problem | | referenced by returned value |
|
| referenced by tids | 750 | | == (int *) NULL )
|
| | 751 | | return (PvmNoMem);
|
| | 752 | | |
| | 753 | | for (i = 0, cnt = 0; i < group->maxntids; i++) |
| | 754 | | { |
| | 755 | | if (group->tids[i] != -1) |
| | 756 | | tids[cnt++] = group->tids[i]; |
| | 757 | | else |
| | 758 | | if (i < ntids) hole_exists = 1; |
| | 759 | | if (cnt > ntids) break; |
| | 760 | | } |
| | 761 | | |
| | 762 | | if (cnt != ntids) |
| | 763 | | { |
| | 764 | | fprintf(stderr, "gs_tidlist: cnt (%d) != ntids (%d) \n", cnt, |
| | 765 | | group->ntids); |
| | 766 | | return(PvmSysErr);
|
| | 767 | | } |
| | 768 | | |
| | 769 | | if (holes_not_allowed && hole_exists) |
| | 770 | | return(PvmNoInst);
|
| | 771 | | |
| | 772 | | pvm_initsend(PvmDataDefault);
|
| | 773 | | pvm_pkint(&ntids, 1, 1); |
| | 774 | | pvm_pkint(tids, cnt, 1); |
| | 775 | | PVM_FREE(tids);
|
| | 776 | | |
| | 777 | | if (group->staticgroup == STATIC)
|
| | 778 | | *gstate = STATIC;
|
| | 779 | | |
| | 780 | | return (PvmOk);
|
| | 781 | | } |