| | 377 | | trc_handle_trace_message( ID, src ) |
| | 378 | | TRC_ID ID; |
| | 379 | | int src; |
| | 380 | | { |
| | 381 | | TRC_DATADESC DD; |
| | 382 | | |
| | 383 | | TRC_TEVDESC TD; |
| | 384 | | |
| | 385 | | TRC_TEVTASK TT; |
| | 386 | | |
| | 387 | | TRC_HOST H; |
| | | | ... |
| | 404 | | int tusec; |
| | 405 | | int tsec; |
| | 406 | | int ecnt; |
| | 407 | | int eid; |
| | 408 | | int tid; |
| | 409 | | int dt; |
| | 410 | | |
| | 411 | | int marker; |
| | 412 | | int nest; |
| | 413 | | |
| | 414 | | ecnt = 0; |
| | 415 | | |
| | 416 | | TRC_PVMCKERR( pvm_upkint( &marker, 1, 1 ),
|
| | 417 | | "Unpacking Trace Message", return( ecnt ) ); |
| | 418 | | |
| | 419 | | |
| | 420 | | |
| | 421 | | if ( marker > 0 ) |
| | 422 | | { |
| | 423 | | tsec = marker; |
| | 424 | | |
| | 425 | | TRC_PVMCKERR( pvm_upkint( &tusec, 1, 1 ),
|
| | 426 | | "Event Parse Error", return( ecnt ) ); |
| | 427 | | |
| | 428 | | TRC_PVMCKERR( pvm_upkint( &tid, 1, 1 ),
|
| | 429 | | "Event Parse Error", return( ecnt ) ); |
| | 430 | | |
| | 431 | | TRC_PVMCKERR( pvm_upkint( &eid, 1, 1 ),
|
| | | | ... |
| | 433 | | |
| | 434 | | ecnt += trc_store_old_trace_event( ID, tsec, tusec, tid, eid ); |
| | 435 | | |
| | 436 | | return( ecnt ); |
| | 437 | | } |
| | 438 | | |
| | 439 | | |
| | 440 | | |
| | 441 | | |
| | 442 | | |
| | 443 | | TT = trc_get_tevtask_tid( ID, src ); |
| | 444 | | |
| | 445 | | pvmd_tid = pvm_tidtohost( src ); |
| | 446 | | |
| | 447 | | if ( !pvmd_tid ) |
| | 448 | | pvmd_tid = pvm_tidtohost( TRC_TID ); |
| | 449 | | |
| | 450 | | H = trc_get_host_tid( pvmd_tid ); |
| | 451 | | |
| | 452 | | |
| | 453 | | |
| | 454 | | omit = ( ID->trace_out == NULL
|
| | 455 | | || ( TT != NULL && TRC_TASK_OMIT( TT ) ) )
|
| | 456 | | ? TRC_TRUE : TRC_FALSE;
|
| | 457 | | |
| | 458 | | |
| | 459 | | |
| | 460 | | nest = 0; |
| | 461 | | |
| | 462 | | done = 0; |
| | 463 | | |
| | 464 | | do |
| | 465 | | { |
| | 466 | | switch ( marker ) |
| | 467 | | { |
| | 468 | | case TEV_MARK_EVENT_BUFFER:
|
| | 469 | | { |
| | 470 | | nest++; |
| | 471 | | |
| | 472 | | break; |
| | 473 | | } |
| | 474 | | |
| | 475 | | case TEV_MARK_EVENT_BUFFER_END:
|
| | 476 | | { |
| | | | ... |
| | 527 | | did_done++; |
| | 528 | | } |
| | 529 | | while ( !did_done ); |
| | 530 | | |
| | 531 | | if ( !nest ) |
| | 532 | | done++; |
| | 533 | | |
| | 534 | | break; |
| | 535 | | } |
| | 536 | | |
| | 537 | | case TEV_MARK_EVENT_DESC:
|
| | 538 | | { |
| | 539 | | TD = trc_create_tevdesc(); |
| | 540 | | |
| | 541 | | TD->refcount = 1; |
| | 542 | | |
| | 543 | | TRC_PVMCKERR( pvm_upkint( &eid, 1, 1 ),
|
| | 544 | | "Event Descriptor ID", return( ecnt ) ); |
| | 545 | | |
| | 546 | | TD->eid = eid & ~( TEV_EVENT_ENTRY | TEV_EVENT_EXIT );
|
| | 547 | | |
| | 548 | | if ( eid & TEV_EVENT_ENTRY )
|
| | 549 | | TD->entry_exit = TRC_ENTRY_TEV;
|
| | 550 | | |
| | 551 | | else if ( eid & TEV_EVENT_EXIT )
|
| | 552 | | TD->entry_exit = TRC_EXIT_TEV;
|
| | 553 | | |
| | 554 | | else |
| | 555 | | TD->entry_exit = TRC_IGNORE_TEV;
|
| | 556 | | |
| | 557 | | TRC_PVMCKERR( pvm_upkstr( tmp ),
|
| | 558 | | "Event Descriptor Name", return( ecnt ) ); |
| | 559 | | |