| | 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 | | | | true | 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 )
| | | | | ... | | | 327 | | if ( cc ) | | | 328 | | SENDINTRESULT( cc, tid, msgtag, "gs_handle(bcast)" )
| | | 329 | | else | | | 330 | | { | | | 331 | | PK_STATE( tid, gstate, groupname, hash_list,
| /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 | } |
| | | 332 | | ngroups, "gs_handle(bcast)" ); | | | 333 | | SENDRESULT( tid, msgtag, "gs_handle(bcast)" );
| | | 334 | | } | | | 335 | | break; | | | 336 | | | | | 337 | | case (GSIZE):
| | | 338 | | pvm_upkstr( groupname ); | | | 339 | | size = gs_gsize( groupname, hash_list, ngroups, | | | 340 | | &gstate ); | | | 341 | | PK_IRESULT( size, "gs_handle(gsize)" );
| | | 342 | | 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 | } |
|
|