P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
EBPF::PSAArchTC Class Reference
Inheritance diagram for EBPF::PSAArchTC:

Public Member Functions

 PSAArchTC (const EbpfOptions &options, std::vector< EBPFType * > &ebpfTypes, XDPHelpProgram *xdp, EBPFPipeline *tcIngress, EBPFPipeline *tcEgress)
 
void emit (CodeBuilder *builder) const override
 
void emitInitializerSection (CodeBuilder *builder) const override
 
void emitInstances (CodeBuilder *builder) const override
 
- Public Member Functions inherited from EBPF::PSAEbpfGenerator
 PSAEbpfGenerator (const EbpfOptions &options, std::vector< EBPFType * > &ebpfTypes, EBPFPipeline *ingress, EBPFPipeline *egress)
 
void emitCommonPreamble (CodeBuilder *builder) const override
 
void emitCRC32LookupTableInitializer (CodeBuilder *builder) const
 
void emitCRC32LookupTableInstance (CodeBuilder *builder) const
 
void emitCRC32LookupTableTypes (CodeBuilder *builder) const
 
void emitGlobalHeadersMetadata (CodeBuilder *builder) const override
 
void emitHelperFunctions (CodeBuilder *builder) const
 
void emitInitializer (CodeBuilder *builder) const
 
void emitInternalStructures (CodeBuilder *pBuilder) const override
 
void emitPacketReplicationTables (CodeBuilder *builder) const
 
void emitPipelineInstances (CodeBuilder *builder) const override
 
void emitPreamble (CodeBuilder *builder) const override
 
void emitPSAIncludes (CodeBuilder *builder) const
 
void emitTypes (CodeBuilder *builder) const override
 
- Public Member Functions inherited from EBPF::EbpfCodeGenerator
 EbpfCodeGenerator (const EbpfOptions &options, std::vector< EBPF::EBPFType * > &ebpfTypes)
 

Public Attributes

XDPHelpProgramxdp
 
- Public Attributes inherited from EBPF::PSAEbpfGenerator
EBPFPipelineegress
 
EBPFPipelineingress
 
- Public Attributes inherited from EBPF::EbpfCodeGenerator
std::vector< EBPF::EBPFType * > ebpfTypes
 
const EbpfOptionsoptions
 

Additional Inherited Members

- Static Public Attributes inherited from EBPF::PSAEbpfGenerator
static const unsigned MaxClones = 64
 
static const unsigned MaxCloneSessions = 1024
 

Member Function Documentation

◆ emit()

void EBPF::PSAArchTC::emit ( CodeBuilder * builder) const
overridevirtual

How the structure of a single C program for PSA should look like?

  1. Automatically generated comment
  2. Includes
  3. Macro definitions (it's called "preamble")
  4. Headers, structs, types, PSA-specific data types.
  5. BPF map definitions.
  6. BPF map initialization
  7. XDP helper program.
  8. Helper functions
  9. TC Ingress program.
  10. TC Egress program.

Implements EBPF::PSAEbpfGenerator.

◆ emitInitializerSection()

void EBPF::PSAArchTC::emitInitializerSection ( CodeBuilder * builder) const
overridevirtual

◆ emitInstances()

void EBPF::PSAArchTC::emitInstances ( CodeBuilder * builder) const
overridevirtual