| | 2056 | | startack(wp, mp) | | | 2057 | | struct waitc *wp; | | | 2058 | | struct pmsg *mp; | | | 2059 | | { | | | 2060 | | struct hostd *hp; | | | 2061 | | struct pmsg *mp2; | | | 2062 | | struct waitc *wp2; | | | 2063 | | struct waitc *wp3; | | | 2064 | | int count; | | | 2065 | | int happy; | | | 2066 | | struct waitc_add *wxp; | | | | | ... | | | 2070 | | int i, j; | | | 2071 | | int t; | | | 2072 | | int hh; | | | 2073 | | char *buf; | | | 2074 | | char buf2[256]; | | | 2075 | | | | | 2076 | | | | | 2077 | | | | | 2078 | | | | | 2079 | | | | | 2080 | | wxp = (struct waitc_add *)wp->wa_spec; | | | 2081 | | count = wxp->w_num; | | | 2082 | | upkint(mp, &j); | | | 2083 | | | | | 2084 | | while (j-- > 0) { | | | 2085 | | if (upkuint(mp, &t) || upkstralloc(mp, &buf)) { | | | 2086 | | pvmlogerror("startack() bad message format\n"); | | | 2087 | | pkint(wp->wa_mesg, PvmDSysErr);
| | | 2088 | | sendmessage(wp->wa_mesg); | | | 2089 | | wp->wa_mesg = 0; | | | 2090 | | wait_delete(wp); | | | 2091 | | busyadding = 0; | | | 2092 | | return 0; | | | 2093 | | } | | | 2094 | | for (i = count; i-- > 0 && wxp->w_hosts[i]->hd_hostpart != t; ) ; | | | | | ... | | | 2127 | | hp->hd_mtu = atoi(av[3]); | | | 2128 | | hp->hd_dsig = atoi(av[4]); | | | 2129 | | | | | 2130 | | PVM_FREE(buf);
| | | 2131 | | } | | | 2132 | | | | | 2133 | | | | | 2134 | | | | | 2135 | | | | | 2136 | | | | | 2137 | | mp2 = wp->wa_mesg; | | | 2138 | | pkint(mp2, count); | | | 2139 | | pkint(mp2, 0); | | | 2140 | | for (i = 0; i < count; i++) { | | | 2141 | | hp = wxp->w_hosts[i]; | | | 2142 | | if (hp->hd_err) { | | | 2143 | | pkint(mp2, hp->hd_err); | | | 2144 | | pkstr(mp2, ""); | | | 2145 | | pkstr(mp2, ""); | | | 2146 | | pkint(mp2, 0); | | | 2147 | | pkint(mp2, 0); | | | 2148 | | | | | 2149 | | } else { | | | 2150 | | pkint(mp2, hp->hd_hostpart); | | | 2151 | | pkstr(mp2, hp->hd_name); | | | 2152 | | pkstr(mp2, hp->hd_arch); | | | 2153 | | pkint(mp2, hp->hd_speed); | | | 2154 | | pkint(mp2, hp->hd_dsig); | | | 2155 | | } | | | 2156 | | } | | | 2157 | | | | | 2158 | | | | | 2159 | | | | | 2160 | | | | | 2161 | | | | | 2162 | | | | | 2163 | | for (j = i = 0; i < count; i++) | | | 2164 | | if (!wxp->w_hosts[i]->hd_err) { | | | 2165 | | hp = wxp->w_hosts[i]; | | | 2166 | | wxp->w_hosts[i] = 0; | | | 2167 | | wxp->w_hosts[j++] = hp; | | | 2168 | | | | | 2169 | | } else { | | | 2170 | | hd_unref(wxp->w_hosts[i]); | | | 2171 | | wxp->w_hosts[i] = 0; | | | 2172 | | } | | | 2173 | | count = j; | | | 2174 | | | | | 2175 | | if (count < 1) { | | | 2176 | | busyadding = 0; | | | 2177 | | sendmessage(wp->wa_mesg); | | | 2178 | | wp->wa_mesg = 0; | | | 2179 | | free_waitc_add(wxp); | | | 2180 | | wait_delete(wp); | | | 2181 | | return 0; | | | 2182 | | } | | | 2183 | | | | | 2184 | | wp2 = wait_new(WT_HTUPD);
| | | 2185 | | wp2->wa_dep = wp->wa_dep; | | | 2186 | | wp2->wa_mesg = wp->wa_mesg; | | | 2187 | | wp->wa_mesg = 0; | | | 2188 | | | | | 2189 | | | | | 2190 | | | | | 2191 | | | | | 2192 | | | | | 2193 | | newhosts = ht_new(1); | | | 2194 | | newhosts->ht_serial = hosts->ht_serial + 1; | | | 2195 | | newhosts->ht_master = hosts->ht_master; | | | 2196 | | newhosts->ht_cons = hosts->ht_cons; | | | 2197 | | newhosts->ht_local = hosts->ht_local; | | | 2198 | | | | | 2199 | | for (i = 0; i < count; i++) | | | 2200 | | ht_insert(newhosts, wxp->w_hosts[i]); | | | 2201 | | | | | 2202 | | free_waitc_add(wxp); | | | 2203 | | wait_delete(wp); | | | 2204 | | wp = 0; | | | 2205 | | | | | 2206 | | runstate = PVMDHTUPD;
| | | 2207 | | | | | 2208 | | | | | 2209 | | | | | 2210 | | | | | 2211 | | | | | 2212 | | for (hh = newhosts->ht_last; hh > 0; hh--) | | | 2213 | | if (hp = newhosts->ht_hosts[hh]) { |
| mp2 <= 4095 | 2215 | | mp2->m_tag = DM_SLCONF;
| | | 2216 | | mp2->m_dst = hp->hd_hostpart | TIDPVMD;
| | | 2217 | | if (hp->hd_epath) { | | | 2218 | | pkint(mp2, DM_SLCONF_EP);
| | | 2219 | | pkstr(mp2, hp->hd_epath); | | | 2220 | | } | | | 2221 | | if (hp->hd_bpath) { | | | 2222 | | pkint(mp2, DM_SLCONF_BP);
| | | 2223 | | pkstr(mp2, hp->hd_bpath); | | | 2224 | | } | | | 2225 | | if (hp->hd_wdir) { | | | 2226 | | pkint(mp2, DM_SLCONF_WD);
| | | 2227 | | pkstr(mp2, hp->hd_wdir); | | | 2228 | | } | | | 2229 | | if (pvmschedtid) { | | | 2230 | | sprintf(buf2, "%x", pvmschedtid); | | | 2231 | | pkint(mp2, DM_SLCONF_SCHED);
| | | 2232 | | pkstr(mp2, buf2); | | | 2233 | | } | | | 2234 | | if (pvmtracer.trctid || pvmtracer.outtid) { | | | 2235 | | sprintf(buf2, "%x %d %d %x %d %d %d %d %s", | | | 2236 | | pvmtracer.trctid, pvmtracer.trcctx, | | | 2237 | | pvmtracer.trctag, | | | 2238 | | pvmtracer.outtid, pvmtracer.outctx, | | | 2239 | | pvmtracer.outtag, | | | 2240 | | pvmtracer.trcbuf, pvmtracer.trcopt, | | | 2241 | | pvmtracer.tmask); | | | 2242 | | pkint(mp2, DM_SLCONF_TRACE);
| | | 2243 | | pkstr(mp2, buf2); | | | 2244 | | } | | | 2245 | | sendmessage(mp2); |
|