P4C
The P4 Compiler
|
#include <p4RuntimeArchStandard.h>
Protected Types | |
using | ArchCounterExtern = CounterExtern<arch> |
using | ArchMeterExtern = MeterExtern<arch> |
using | Counter = p4configv1::Counter |
using | CounterSpec = p4configv1::CounterSpec |
using | CounterTraits = Helpers::CounterlikeTraits<ArchCounterExtern> |
using | Meter = p4configv1::Meter |
using | MeterSpec = p4configv1::MeterSpec |
using | MeterTraits = Helpers::CounterlikeTraits<ArchMeterExtern> |
Protected Member Functions | |
P4RuntimeArchHandlerCommon (ReferenceMap *refMap, TypeMap *typeMap, const IR::ToplevelBlock *evaluatedProgram) | |
void | addActionProfile (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const ActionProfile &actionProfile) |
void | addCounter (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const Helpers::Counterlike< ArchCounterExtern > &counterInstance) |
void | addDigest (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const Digest &digest) |
void | addExternEntries (const p4::v1::WriteRequest *, const P4RuntimeSymbolTableIface &, const IR::ExternBlock *) override |
This method is called to add target specific extern entries. | |
void | addExternFunction (const P4RuntimeSymbolTableIface &, p4configv1::P4Info *, const P4::ExternFunction *) override |
void | addExternInstance (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4info, const IR::ExternBlock *externBlock) override |
void | addMeter (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const Helpers::Counterlike< ArchMeterExtern > &meterInstance) |
void | addRegister (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const Register ®isterInstance) |
void | addTableProperties (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4info, p4configv1::Table *table, const IR::TableBlock *tableBlock) override |
void | collectAssignmentStatement (P4RuntimeSymbolTableIface *, const IR::AssignmentStatement *) override |
Collects architecture-specific used in assignment statements. | |
void | collectExternFunction (P4RuntimeSymbolTableIface *symbols, const P4::ExternFunction *externFunction) override |
void | collectExternInstance (P4RuntimeSymbolTableIface *symbols, const IR::ExternBlock *externBlock) override |
Collects architecture-specific @externBlock instance in @symbols table. | |
void | collectExternMethod (P4RuntimeSymbolTableIface *, const P4::ExternMethod *) override |
Collects architecture-specific @externMethod instance in @symbols table. | |
void | collectExtra (P4RuntimeSymbolTableIface *symbols) override |
void | collectTableProperties (P4RuntimeSymbolTableIface *symbols, const IR::TableBlock *tableBlock) override |
bool | filterAnnotations (cstring) override |
called when processing annotations via setPreamble | |
google::protobuf::util::JsonPrintOptions | getJsonPrintOptions () override |
Control how JSON is output. | |
void | postAdd (const P4RuntimeSymbolTableIface &, ::p4::config::v1::P4Info *) override |
void | postCollect (const P4RuntimeSymbolTableIface &symbols) override |
template<typename Kind > | |
void | setCounterCommon (const P4RuntimeSymbolTableIface &symbols, Kind *counter, p4rt_id_t id, const Helpers::Counterlike< ArchCounterExtern > &counterInstance) |
Set common fields between Counter and DirectCounter. | |
template<typename Kind > | |
void | setMeterCommon (const P4RuntimeSymbolTableIface &symbols, Kind *meter, p4rt_id_t id, const Helpers::Counterlike< ArchMeterExtern > &meterInstance) |
Set common fields between Meter and DirectMeter. | |
Static Protected Member Functions | |
static std::optional< ActionProfile > | getActionProfile (const IR::ExternBlock *instance) |
static std::optional< ActionProfile > | getActionProfile (const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap) |
static std::optional< ActionProfile > | getActionProfile (cstring name, const IR::Type_Extern *type, int64_t size, const IR::IAnnotated *annotations) |
static const IR::IAnnotated * | getTableImplementationAnnotations (const IR::P4Table *table, ReferenceMap *refMap) |
static std::optional< cstring > | getTableImplementationName (const IR::P4Table *table, ReferenceMap *refMap) |
static const IR::Property * | getTableImplementationProperty (const IR::P4Table *table) |
Protected Attributes | |
std::unordered_map< cstring, std::set< cstring > > | actionProfilesRefs |
const IR::ToplevelBlock * | evaluatedProgram |
google::protobuf::util::JsonPrintOptions | jsonPrintOptions |
ReferenceMap * | refMap |
std::set< p4rt_id_t > | serializedInstances |
The extern instances we've serialized so far. Used for deduplication. | |
TypeMap * | typeMap |
Additional Inherited Members | |
Public Member Functions inherited from P4::ControlPlaneAPI::P4RuntimeArchHandlerIface | |
virtual void | addExternFunction (const P4RuntimeSymbolTableIface &symbols, ::p4::config::v1::P4Info *p4info, const P4::ExternFunction *externFunction)=0 |
virtual void | addExternInstance (const P4RuntimeSymbolTableIface &symbols, ::p4::config::v1::P4Info *p4info, const IR::ExternBlock *externBlock)=0 |
virtual void | addTableProperties (const P4RuntimeSymbolTableIface &symbols, ::p4::config::v1::P4Info *p4info, ::p4::config::v1::Table *table, const IR::TableBlock *tableBlock)=0 |
virtual cstring | getControlPlaneName (const IR::Block *block) |
Get control plane name for @block. | |
Parent class for P4RuntimeArchHandlerV1Model and P4RuntimeArchHandlerPSA; it includes all the common code between the two architectures (which is only dependent on the @arch template parameter. The major difference at the moment is handling of digest, which is an extern function in v1model and an extern type in PSA.
|
inlineoverrideprotectedvirtual |
This method is called to add target specific extern entries.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
Collects architecture-specific used in assignment statements.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
Collects extern method call @externFunction in @symbols table in case it needs to be exposed to the control-plane (e.g. digest call for v1model).
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
Reimplemented in P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerV1Model.
|
inlineoverrideprotectedvirtual |
Collects architecture-specific @externBlock instance in @symbols table.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
Reimplemented in P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerPSAPNA< arch >, P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerPSAPNA< Arch::PNA >, and P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerPSAPNA< Arch::PSA >.
|
inlineoverrideprotectedvirtual |
Collects architecture-specific @externMethod instance in @symbols table.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
Collects any extra symbols you may want to include in the symbol table and that are not covered by the above collection methods.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
Collects architecture-specific properties for @tableBlock in @symbols table.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
called when processing annotations via setPreamble
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlineoverrideprotectedvirtual |
Control how JSON is output.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlinestaticprotected |
|
inlineoverrideprotectedvirtual |
This method is called after the add pass in case the architecture requires some logic to be performed then.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.
|
inlineoverrideprotectedvirtual |
This method is called between the two passes (collect and add) in case the architecture requires some logic to be performed then.
Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.