OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 #define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \ | 444 #define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \ |
445 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \ | 445 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \ |
446 category, name, id, TRACE_EVENT_FLAG_COPY, \ | 446 category, name, id, TRACE_EVENT_FLAG_COPY, \ |
447 arg1_name, arg1_val) | 447 arg1_name, arg1_val) |
448 #define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \ | 448 #define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \ |
449 arg2_name, arg2_val) \ | 449 arg2_name, arg2_val) \ |
450 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \ | 450 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \ |
451 category, name, id, TRACE_EVENT_FLAG_COPY, \ | 451 category, name, id, TRACE_EVENT_FLAG_COPY, \ |
452 arg1_name, arg1_val, arg2_name, arg2_val) | 452 arg1_name, arg1_val, arg2_name, arg2_val) |
453 | 453 |
| 454 |
| 455 // Records a single FLOW_BEGIN event called "name" immediately, with 0, 1 or 2 |
| 456 // associated arguments. If the category is not enabled, then this |
| 457 // does nothing. |
| 458 // - category and name strings must have application lifetime (statics or |
| 459 // literals). They may not include " chars. |
| 460 // - |id| is used to match the FLOW_BEGIN event with the FLOW_END event. FLOW |
| 461 // events are considered to match if their category_group, name and id values |
| 462 // all match. |id| must either be a pointer or an integer value up to 64 bits. |
| 463 // If it's a pointer, the bits will be xored with a hash of the process ID so |
| 464 // that the same pointer on two different processes will not collide. |
| 465 // FLOW events are different from ASYNC events in how they are drawn by the |
| 466 // tracing UI. A FLOW defines asynchronous data flow, such as posting a task |
| 467 // (FLOW_BEGIN) and later executing that task (FLOW_END). Expect FLOWs to be |
| 468 // drawn as lines or arrows from FLOW_BEGIN scopes to FLOW_END scopes. Similar |
| 469 // to ASYNC, a FLOW can consist of multiple phases. The first phase is defined |
| 470 // by the FLOW_BEGIN calls. Additional phases can be defined using the FLOW_STEP |
| 471 // macros. When the operation completes, call FLOW_END. An async operation can |
| 472 // span threads and processes, but all events in that operation must use the |
| 473 // same |name| and |id|. Each event can have its own args. |
| 474 #define TRACE_EVENT_FLOW_BEGIN0(category_group, name, id) \ |
| 475 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 476 category_group, name, id, TRACE_EVENT_FLAG_NONE) |
| 477 #define TRACE_EVENT_FLOW_BEGIN1(category_group, name, id, arg1_name, arg1_val) \ |
| 478 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 479 category_group, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val) |
| 480 #define TRACE_EVENT_FLOW_BEGIN2(category_group, name, id, arg1_name, arg1_val, \ |
| 481 arg2_name, arg2_val) \ |
| 482 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 483 category_group, name, id, TRACE_EVENT_FLAG_NONE, \ |
| 484 arg1_name, arg1_val, arg2_name, arg2_val) |
| 485 #define TRACE_EVENT_COPY_FLOW_BEGIN0(category_group, name, id) \ |
| 486 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 487 category_group, name, id, TRACE_EVENT_FLAG_COPY) |
| 488 #define TRACE_EVENT_COPY_FLOW_BEGIN1(category_group, name, id, arg1_name, \ |
| 489 arg1_val) \ |
| 490 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 491 category_group, name, id, TRACE_EVENT_FLAG_COPY, \ |
| 492 arg1_name, arg1_val) |
| 493 #define TRACE_EVENT_COPY_FLOW_BEGIN2(category_group, name, id, arg1_name, \ |
| 494 arg1_val, arg2_name, arg2_val) \ |
| 495 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \ |
| 496 category_group, name, id, TRACE_EVENT_FLAG_COPY, \ |
| 497 arg1_name, arg1_val, arg2_name, arg2_val) |
| 498 |
| 499 // Records a single FLOW_STEP event for |step| immediately. If the category |
| 500 // is not enabled, then this does nothing. The |name| and |id| must match the |
| 501 // FLOW_BEGIN event above. The |step| param identifies this step within the |
| 502 // async event. This should be called at the beginning of the next phase of an |
| 503 // asynchronous operation. |
| 504 #define TRACE_EVENT_FLOW_STEP0(category_group, name, id, step) \ |
| 505 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \ |
| 506 category_group, name, id, TRACE_EVENT_FLAG_NONE, "step", step) |
| 507 #define TRACE_EVENT_FLOW_STEP1(category_group, name, id, step, \ |
| 508 arg1_name, arg1_val) \ |
| 509 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \ |
| 510 category_group, name, id, TRACE_EVENT_FLAG_NONE, "step", step, \ |
| 511 arg1_name, arg1_val) |
| 512 #define TRACE_EVENT_COPY_FLOW_STEP0(category_group, name, id, step) \ |
| 513 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \ |
| 514 category_group, name, id, TRACE_EVENT_FLAG_COPY, "step", step) |
| 515 #define TRACE_EVENT_COPY_FLOW_STEP1(category_group, name, id, step, \ |
| 516 arg1_name, arg1_val) \ |
| 517 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \ |
| 518 category_group, name, id, TRACE_EVENT_FLAG_COPY, "step", step, \ |
| 519 arg1_name, arg1_val) |
| 520 |
| 521 // Records a single FLOW_END event for "name" immediately. If the category |
| 522 // is not enabled, then this does nothing. |
| 523 #define TRACE_EVENT_FLOW_END0(category_group, name, id) \ |
| 524 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 525 category_group, name, id, TRACE_EVENT_FLAG_NONE) |
| 526 #define TRACE_EVENT_FLOW_END1(category_group, name, id, arg1_name, arg1_val) \ |
| 527 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 528 category_group, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val) |
| 529 #define TRACE_EVENT_FLOW_END2(category_group, name, id, arg1_name, arg1_val, \ |
| 530 arg2_name, arg2_val) \ |
| 531 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 532 category_group, name, id, TRACE_EVENT_FLAG_NONE, \ |
| 533 arg1_name, arg1_val, arg2_name, arg2_val) |
| 534 #define TRACE_EVENT_COPY_FLOW_END0(category_group, name, id) \ |
| 535 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 536 category_group, name, id, TRACE_EVENT_FLAG_COPY) |
| 537 #define TRACE_EVENT_COPY_FLOW_END1(category_group, name, id, arg1_name, \ |
| 538 arg1_val) \ |
| 539 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 540 category_group, name, id, TRACE_EVENT_FLAG_COPY, \ |
| 541 arg1_name, arg1_val) |
| 542 #define TRACE_EVENT_COPY_FLOW_END2(category_group, name, id, arg1_name, \ |
| 543 arg1_val, arg2_name, arg2_val) \ |
| 544 INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \ |
| 545 category_group, name, id, TRACE_EVENT_FLAG_COPY, \ |
| 546 arg1_name, arg1_val, arg2_name, arg2_val) |
| 547 |
| 548 |
454 // Creates a scope of a sampling state with the given category and name (both mu
st | 549 // Creates a scope of a sampling state with the given category and name (both mu
st |
455 // be constant strings). These states are intended for a sampling profiler. | 550 // be constant strings). These states are intended for a sampling profiler. |
456 // Implementation note: we store category and name together because we don't | 551 // Implementation note: we store category and name together because we don't |
457 // want the inconsistency/expense of storing two pointers. | 552 // want the inconsistency/expense of storing two pointers. |
458 // |thread_bucket| is [0..2] and is used to statically isolate samples in one | 553 // |thread_bucket| is [0..2] and is used to statically isolate samples in one |
459 // thread from others. | 554 // thread from others. |
460 // | 555 // |
461 // { // The sampling state is set within this scope. | 556 // { // The sampling state is set within this scope. |
462 // TRACE_EVENT_SAMPLING_STATE_SCOPE_FOR_BUCKET(0, "category", "name"); | 557 // TRACE_EVENT_SAMPLING_STATE_SCOPE_FOR_BUCKET(0, "category", "name"); |
463 // ...; | 558 // ...; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 #define TRACE_EVENT_PHASE_ASYNC_BEGIN ('S') | 736 #define TRACE_EVENT_PHASE_ASYNC_BEGIN ('S') |
642 #define TRACE_EVENT_PHASE_ASYNC_STEP_INTO ('T') | 737 #define TRACE_EVENT_PHASE_ASYNC_STEP_INTO ('T') |
643 #define TRACE_EVENT_PHASE_ASYNC_STEP_PAST ('p') | 738 #define TRACE_EVENT_PHASE_ASYNC_STEP_PAST ('p') |
644 #define TRACE_EVENT_PHASE_ASYNC_END ('F') | 739 #define TRACE_EVENT_PHASE_ASYNC_END ('F') |
645 #define TRACE_EVENT_PHASE_METADATA ('M') | 740 #define TRACE_EVENT_PHASE_METADATA ('M') |
646 #define TRACE_EVENT_PHASE_COUNTER ('C') | 741 #define TRACE_EVENT_PHASE_COUNTER ('C') |
647 #define TRACE_EVENT_PHASE_SAMPLE ('P') | 742 #define TRACE_EVENT_PHASE_SAMPLE ('P') |
648 #define TRACE_EVENT_PHASE_CREATE_OBJECT ('N') | 743 #define TRACE_EVENT_PHASE_CREATE_OBJECT ('N') |
649 #define TRACE_EVENT_PHASE_SNAPSHOT_OBJECT ('O') | 744 #define TRACE_EVENT_PHASE_SNAPSHOT_OBJECT ('O') |
650 #define TRACE_EVENT_PHASE_DELETE_OBJECT ('D') | 745 #define TRACE_EVENT_PHASE_DELETE_OBJECT ('D') |
| 746 #define TRACE_EVENT_PHASE_FLOW_BEGIN ('s') |
| 747 #define TRACE_EVENT_PHASE_FLOW_STEP ('t') |
| 748 #define TRACE_EVENT_PHASE_FLOW_END ('f') |
651 | 749 |
652 // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT. | 750 // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT. |
653 #define TRACE_EVENT_FLAG_NONE (static_cast<unsigned char>(0)) | 751 #define TRACE_EVENT_FLAG_NONE (static_cast<unsigned char>(0)) |
654 #define TRACE_EVENT_FLAG_COPY (static_cast<unsigned char>(1 << 0)) | 752 #define TRACE_EVENT_FLAG_COPY (static_cast<unsigned char>(1 << 0)) |
655 #define TRACE_EVENT_FLAG_HAS_ID (static_cast<unsigned char>(1 << 1)) | 753 #define TRACE_EVENT_FLAG_HAS_ID (static_cast<unsigned char>(1 << 1)) |
656 #define TRACE_EVENT_FLAG_MANGLE_ID (static_cast<unsigned char>(1 << 2)) | 754 #define TRACE_EVENT_FLAG_MANGLE_ID (static_cast<unsigned char>(1 << 2)) |
657 | 755 |
658 // Type values for identifying types in the TraceValue union. | 756 // Type values for identifying types in the TraceValue union. |
659 #define TRACE_VALUE_TYPE_BOOL (static_cast<unsigned char>(1)) | 757 #define TRACE_VALUE_TYPE_BOOL (static_cast<unsigned char>(1)) |
660 #define TRACE_VALUE_TYPE_UINT (static_cast<unsigned char>(2)) | 758 #define TRACE_VALUE_TYPE_UINT (static_cast<unsigned char>(2)) |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 const char* m_categoryGroup; | 1103 const char* m_categoryGroup; |
1006 const char* m_name; | 1104 const char* m_name; |
1007 IDType m_id; | 1105 IDType m_id; |
1008 }; | 1106 }; |
1009 | 1107 |
1010 } // namespace TraceEvent | 1108 } // namespace TraceEvent |
1011 | 1109 |
1012 } // namespace blink | 1110 } // namespace blink |
1013 | 1111 |
1014 #endif | 1112 #endif |
OLD | NEW |