reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
44 State CurrentRecord = State::Unknown; 44 State CurrentRecord = State::Unknown; 48 Error transition(State To);lib/XRay/BlockVerifier.cpp
15 constexpr unsigned long long mask(BlockVerifier::State S) { 19 constexpr std::size_t number(BlockVerifier::State S) { 23 StringRef recordToString(BlockVerifier::State R) { 25 case BlockVerifier::State::BufferExtents: 27 case BlockVerifier::State::NewBuffer: 29 case BlockVerifier::State::WallClockTime: 31 case BlockVerifier::State::PIDEntry: 33 case BlockVerifier::State::NewCPUId: 35 case BlockVerifier::State::TSCWrap: 37 case BlockVerifier::State::CustomEvent: 39 case BlockVerifier::State::Function: 41 case BlockVerifier::State::CallArg: 43 case BlockVerifier::State::EndOfBuffer: 45 case BlockVerifier::State::TypedEvent: 47 case BlockVerifier::State::StateMax: 48 case BlockVerifier::State::Unknown: 55 BlockVerifier::State From; 56 std::bitset<number(BlockVerifier::State::StateMax)> ToStates; 61 Error BlockVerifier::transition(State To) { 62 using ToSet = std::bitset<number(State::StateMax)>; 63 static constexpr std::array<const Transition, number(State::StateMax)> 64 TransitionTable{{{State::Unknown, 65 {mask(State::BufferExtents) | mask(State::NewBuffer)}}, 65 {mask(State::BufferExtents) | mask(State::NewBuffer)}}, 67 {State::BufferExtents, {mask(State::NewBuffer)}}, 67 {State::BufferExtents, {mask(State::NewBuffer)}}, 69 {State::NewBuffer, {mask(State::WallClockTime)}}, 69 {State::NewBuffer, {mask(State::WallClockTime)}}, 71 {State::WallClockTime, 72 {mask(State::PIDEntry) | mask(State::NewCPUId)}}, 72 {mask(State::PIDEntry) | mask(State::NewCPUId)}}, 74 {State::PIDEntry, {mask(State::NewCPUId)}}, 74 {State::PIDEntry, {mask(State::NewCPUId)}}, 76 {State::NewCPUId, 77 {mask(State::NewCPUId) | mask(State::TSCWrap) | 77 {mask(State::NewCPUId) | mask(State::TSCWrap) | 78 mask(State::CustomEvent) | mask(State::Function) | 78 mask(State::CustomEvent) | mask(State::Function) | 79 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 79 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 81 {State::TSCWrap, 82 {mask(State::TSCWrap) | mask(State::NewCPUId) | 82 {mask(State::TSCWrap) | mask(State::NewCPUId) | 83 mask(State::CustomEvent) | mask(State::Function) | 83 mask(State::CustomEvent) | mask(State::Function) | 84 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 84 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 86 {State::CustomEvent, 87 {mask(State::CustomEvent) | mask(State::TSCWrap) | 87 {mask(State::CustomEvent) | mask(State::TSCWrap) | 88 mask(State::NewCPUId) | mask(State::Function) | 88 mask(State::NewCPUId) | mask(State::Function) | 89 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 89 mask(State::EndOfBuffer) | mask(State::TypedEvent)}}, 91 {State::TypedEvent, 92 {mask(State::TypedEvent) | mask(State::TSCWrap) | 92 {mask(State::TypedEvent) | mask(State::TSCWrap) | 93 mask(State::NewCPUId) | mask(State::Function) | 93 mask(State::NewCPUId) | mask(State::Function) | 94 mask(State::EndOfBuffer) | mask(State::CustomEvent)}}, 94 mask(State::EndOfBuffer) | mask(State::CustomEvent)}}, 96 {State::Function, 97 {mask(State::Function) | mask(State::TSCWrap) | 97 {mask(State::Function) | mask(State::TSCWrap) | 98 mask(State::NewCPUId) | mask(State::CustomEvent) | 98 mask(State::NewCPUId) | mask(State::CustomEvent) | 99 mask(State::CallArg) | mask(State::EndOfBuffer) | 99 mask(State::CallArg) | mask(State::EndOfBuffer) | 100 mask(State::TypedEvent)}}, 102 {State::CallArg, 103 {mask(State::CallArg) | mask(State::Function) | 103 {mask(State::CallArg) | mask(State::Function) | 104 mask(State::TSCWrap) | mask(State::NewCPUId) | 104 mask(State::TSCWrap) | mask(State::NewCPUId) | 105 mask(State::CustomEvent) | mask(State::EndOfBuffer) | 105 mask(State::CustomEvent) | mask(State::EndOfBuffer) | 106 mask(State::TypedEvent)}}, 108 {State::EndOfBuffer, {}}}}; 110 if (CurrentRecord >= State::StateMax) 119 if (CurrentRecord == State::EndOfBuffer && To != State::NewBuffer) 119 if (CurrentRecord == State::EndOfBuffer && To != State::NewBuffer) 137 return transition(State::BufferExtents); 141 return transition(State::WallClockTime); 145 return transition(State::NewCPUId); 149 return transition(State::TSCWrap); 153 return transition(State::CustomEvent); 157 return transition(State::CustomEvent); 161 return transition(State::TypedEvent); 165 return transition(State::CallArg); 168 Error BlockVerifier::visit(PIDRecord &) { return transition(State::PIDEntry); } 171 return transition(State::NewBuffer); 175 return transition(State::EndOfBuffer); 179 return transition(State::Function); 185 case State::EndOfBuffer: 186 case State::NewCPUId: 187 case State::CustomEvent: 188 case State::TypedEvent: 189 case State::Function: 190 case State::CallArg: 191 case State::TSCWrap: 201 void BlockVerifier::reset() { CurrentRecord = State::Unknown; }