| | 245 | | gs_handle( hash_list, ngroups, gstid ) | | | 246 | | GROUP_LIST_PTR hash_list; | | | 247 | | int *ngroups, *gstid; | | | 248 | | { | | | 249 | | int len, msgtag, tid, gid, cc, ftid, inst, i, size, ntids, listsize; | | | 250 | | int cnt, hosttid, nhosts, nmem_onhost, pcoord; | | | 251 | | int *nmem_onhostv = (int *) NULL, *pcoordv = (int *) NULL;
| | | 252 | | int mxupklen = 0; | | | 253 | | GROUP_STRUCT_PTR group; | | | 254 | | char *groupname = (char *) NULL;
| | | 255 | | int *tidlist = (int *) NULL;
| | | 256 | | int maxntids = 0, info; | | | 257 | | int gstate; | | | 258 | | | | | 259 | | while ( 1 ) | | | 260 | | { | | | 261 | | if ( (cc = pvm_recv( -1, -1 )) < 0 ) | | | 262 | | { | | | 263 | | pvm_perror( "gs_handle(recv)" ); | | | 264 | | return( cc ); | | | 265 | | } | | | 266 | | | | | 267 | | if ( (cc = pvm_bufinfo( pvm_getrbuf(), &len, &msgtag, &tid )) | | | 268 | | < 0 ) | | | 269 | | { | | | 270 | | pvm_perror("gs_handle(bufinfo)"); | | | 271 | | return( cc ); | | | 272 | | } | | | 273 | | | | | 274 | | | | | 275 | | | | | 276 | | REALLOCSTRING( len, mxupklen , groupname, "gs_handle(entry)" );
| | | 277 | | | | | 278 | | switch( msgtag ) | | | 279 | | { | | | 280 | | case (DIE):
| | | 281 | | gs_pstate( "pvmgs", hash_list, ngroups ); | | | 282 | | return( PvmOk );
| | | 283 | | | | | 284 | | case (JOIN):
| | | 285 | | pvm_upkstr( groupname ); | | | 286 | | gid = gs_join( groupname, tid, hash_list, ngroups ); | | | 287 | | | | | 288 | | if ( pvm_notify( PvmTaskExit, DEADTID, 1, &tid ) < 0 )
| | | | | ... | | | 379 | | | | | 380 | | case DUMP:
| | | 381 | | gs_pstate( "DUMP", hash_list, ngroups ); | | | 382 | | break; | | | 383 | | | | | 384 | | case GSLS:
| | | 385 | | gs_ls( hash_list, ngroups ); | | | 386 | | pvm_send( tid, msgtag ); | | | 387 | | break; | | | 388 | | | | | 389 | | case HOSTCHAR:
| | | 390 | | pvm_upkstr( groupname ); | | | 391 | | pvm_upkint( &hosttid, 1, 1 ); | | | 392 | | gs_host_char( groupname, hash_list, ngroups, hosttid, | | | 393 | | &pcoord, &nmem_onhost, &nhosts, &gstate ); | | | 394 | | PK_IRESULT( nhosts, "gs_handle(hostchar)" );
| | | 395 | | pvm_pkint( &nmem_onhost, 1, 1 ); | | | 396 | | pvm_pkint( &pcoord, 1, 1 ); | | | 397 | | PK_STATE( tid, gstate, groupname, hash_list, ngroups,
| /kat0/fletcher/SATE/2010/pvm3/pvmgs/pvmgs_mac.h | | 61 | #define PK_STATE( tid, state, name, hash_list, ngroups, caller ) \ | | 62 | { if ( pvm_pkint( &(state), 1, 1 ) < 0 ) \ | | 63 | pvm_perror( caller ); \ | | 64 | if ( state == STATIC ) \ | | 65 | if ( gs_newstaticcache( tid, name, hash_list, ngroups, \ | | 66 | caller ) == PvmgsNotCached ) \ | | 67 | gs_pkstaticinfo( gs_group( name, hash_list, ngroups, \ | | 68 | NOCREATE ) ); \ | | 69 | } |
|
|