| | 2097 | | pvm_delhosts(names, count, svp) |
| | 2098 | | char **names; |
| | 2099 | | int count; |
| | 2100 | | int *svp; |
| | 2101 | | { |
| | 2102 | | int sbf, rbf; |
| | 2103 | | int cc; |
| | 2104 | | int i; |
| | 2105 | | int *sv; |
| | 2106 | | TEV_DECLS
|
| | 2107 | | |
| | 2108 | | if (TEV_EXCLUSIVE) {
|
| | 2109 | | if (TEV_DO_TRACE(TEV_DELHOSTS,TEV_EVENT_ENTRY)) {
|
| | 2110 | | TEV_PACK_STRING( TEV_DID_HNL, TEV_DATA_ARRAY,
|
| | 2111 | | names, count, 1 ); |
| | 2112 | | TEV_FIN;
|
| | 2113 | | } |
| | 2114 | | } |
| | 2115 | | |
| | 2116 | | if (count < 1 || count > (TIDHOST >> (ffs(TIDHOST) - 1))) {
|
| | 2117 | | cc = PvmBadParam;
|
| | 2118 | | |
| | 2119 | | } else { |
| | 2120 | | if (!(cc = BEATASK)) {
|
| | 2121 | | sbf = pvm_setsbuf(pvm_mkbuf(PvmDataFoo));
|
| | 2122 | | rbf = pvm_setrbuf(0); |
| | 2123 | | pvm_pkint(&count, 1, 1); |
| | 2124 | | for (i = 0; i < count; i++) |
| | 2125 | | pvm_pkstr(names[i]); |
| | 2126 | | |
| | 2127 | | if (pvmschedtid) |
| | 2128 | | cc = msendrecv(pvmschedtid, SM_DELHOST, PvmBaseContext);
|
| | 2129 | | else |
| | 2130 | | cc = msendrecv(TIDPVMD, TM_DELHOST, SYSCTX_TM);
|
| | 2131 | | if (cc > 0) { |
| | 2132 | | pvm_upkint(&cc, 1, 1); |
| | 2133 | | if (cc >= 0) { |
| | 2134 | | if (cc == count) { |
| true | 2135 | | sv = TALLOC(count, int, "sv2");
|
| | 2136 | | pvm_upkint(sv, count, 1); |
| | 2137 | | cc = 0; |
| | 2138 | | for (i = count; i-- > 0; ) |
| | 2139 | | if (sv[i] >= 0) |
| | 2140 | | cc++; |
| | 2141 | | if (svp) |
| | 2142 | | BCOPY((char*)sv, (char*)svp, count * sizeof(int));
|
| sv <= 4095 | 2143 | | PVM_FREE(sv);
|