P4C
The P4 Compiler
Loading...
Searching...
No Matches
P4::ControlPlaneAPI::Standard::BFRuntimeArchHandler< arch > Class Template Reference
Inheritance diagram for P4::ControlPlaneAPI::Standard::BFRuntimeArchHandler< arch >:
[legend]

Public 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>
 

Public Member Functions

 BFRuntimeArchHandler (ReferenceMap *refMap, TypeMap *typeMap, const IR::ToplevelBlock *evaluatedProgram)
 
void addActionSelector (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4Info, const ActionSelector &actionSelector, cstring pipeName=cstring::empty)
 
void addExternInstance (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4info, const IR::ExternBlock *externBlock) override
 
void addTableProperties (const P4RuntimeSymbolTableIface &symbols, p4configv1::P4Info *p4info, p4configv1::Table *table, const IR::TableBlock *tableBlock) override
 
void collectExternInstance (P4RuntimeSymbolTableIface *symbols, const IR::ExternBlock *externBlock) override
 Collects architecture-specific @externBlock instance in @symbols table.
 
template<typename Func >
void forAllPipeBlocks (const IR::ToplevelBlock *evaluatedProgram, Func function)
 
std::optional< ActionSelectorgetActionSelector (const IR::ExternBlock *instance)
 
cstring getBlockNamePrefix (const IR::Block *blk)
 
std::optional< DigestgetDigest (const IR::Declaration_Instance *decl, p4configv1::P4TypeInfo *p4RtTypeInfo)
 
- 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.
 

Static Public Member Functions

static void addP4InfoExternInstance (const P4RuntimeSymbolTableIface &symbols, P4RuntimeSymbolType typeId, cstring typeName, cstring name, const IR::IAnnotated *annotations, const ::google::protobuf::Message &message, p4configv1::P4Info *p4info, cstring pipeName=cstring::empty)
 
static p4configv1::Extern * getP4InfoExtern (P4RuntimeSymbolType typeId, cstring typeName, p4configv1::P4Info *p4info)
 
static bool getSupportsTimeout (const IR::P4Table *table)
 

Protected Attributes

std::unordered_map< const IR::Block *, cstringblockNamePrefixMap
 
- Protected Attributes inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< arch >
std::unordered_map< cstring, std::set< cstring > > actionProfilesRefs
 
const IR::ToplevelBlock * evaluatedProgram
 
google::protobuf::util::JsonPrintOptions jsonPrintOptions
 
ReferenceMaprefMap
 
std::set< p4rt_id_t > serializedInstances
 The extern instances we've serialized so far. Used for deduplication.
 
TypeMaptypeMap
 

Additional Inherited Members

- Protected Types inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< arch >
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 inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< arch >
 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 &registerInstance)
 
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 inherited from P4::ControlPlaneAPI::Standard::P4RuntimeArchHandlerCommon< arch >
static std::optional< ActionProfilegetActionProfile (const IR::ExternBlock *instance)
 
static std::optional< ActionProfilegetActionProfile (const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
 
static std::optional< ActionProfilegetActionProfile (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< cstringgetTableImplementationName (const IR::P4Table *table, ReferenceMap *refMap)
 
static const IR::Property * getTableImplementationProperty (const IR::P4Table *table)
 

Member Function Documentation

◆ collectExternInstance()

template<Arch arch>
void P4::ControlPlaneAPI::Standard::BFRuntimeArchHandler< arch >::collectExternInstance ( P4RuntimeSymbolTableIface * symbols,
const IR::ExternBlock * externBlock )
inlineoverridevirtual

Collects architecture-specific @externBlock instance in @symbols table.

Implements P4::ControlPlaneAPI::P4RuntimeArchHandlerIface.

◆ getDigest()

template<Arch arch>
std::optional< Digest > P4::ControlPlaneAPI::Standard::BFRuntimeArchHandler< arch >::getDigest ( const IR::Declaration_Instance * decl,
p4configv1::P4TypeInfo * p4RtTypeInfo )
inline
Returns
serialization information for the Digest extern instacne @decl

◆ getSupportsTimeout()

template<Arch arch>
static bool P4::ControlPlaneAPI::Standard::BFRuntimeArchHandler< arch >::getSupportsTimeout ( const IR::P4Table * table)
inlinestatic
Returns
true if @table's 'psa_idle_timeout' property exists and is true. This indicates that @table supports entry ageing.