P4C
The P4 Compiler
|
#include <p4RuntimeArchStandard.h>
Public Member Functions | |
P4RuntimeArchHandlerUBPF (ReferenceMap *refMap, TypeMap *typeMap, const IR::ToplevelBlock *evaluatedProgram) | |
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. | |
Additional Inherited Members | |
Protected Types inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< Arch::PSA > | |
using | ArchCounterExtern |
using | ArchMeterExtern |
using | Counter |
using | CounterSpec |
using | CounterTraits |
using | Meter |
using | MeterSpec |
using | MeterTraits |
Protected Member Functions inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< Arch::PSA > | |
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 |
void | setCounterCommon (const P4RuntimeSymbolTableIface &symbols, Kind *counter, p4rt_id_t id, const Helpers::Counterlike< ArchCounterExtern > &counterInstance) |
Set common fields between Counter and DirectCounter. | |
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 inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< Arch::PSA > | |
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 inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< Arch::PSA > | |
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 |
Implements P4RuntimeArchHandlerIface for the UBPF architecture. We re-use PSA to handle externs. Rationale: The only configurable extern object in ubpf_model.p4 is Register. The Register is defined exactly the same as for PSA. Therefore, we can re-use PSA.