P4C
The P4 Compiler
Loading...
Searching...
No Matches
P4::TC Namespace Reference

This file defines functions for the pass to generate the introspection file. More...

Classes

struct  ActionAttributes
 
struct  ActionParam
 
class  ActionTranslationVisitorPNA
 
struct  Annotation
 
class  Backend
 
struct  container
 
class  ControlBodyTranslatorPNA
 
class  ConvertToBackendIR
 
class  ConvertToEBPFControlPNA
 
class  ConvertToEBPFDeparserPNA
 
class  ConvertToEBPFParserPNA
 
class  ConvertToEbpfPipelineTC
 
class  ConvertToEbpfPNA
 
class  CRCChecksumAlgorithmPNA
 
struct  decllist
 
class  DeparserBodyTranslatorPNA
 
class  DeparserHdrEmitTranslatorPNA
 
class  EBPFChecksumAlgorithmTypeFactoryPNA
 
class  EBPFChecksumPNA
 
class  EBPFControlPNA
 
class  EBPFCounterPNA
 
class  EBPFCRCChecksumPNA
 
class  EBPFDigestPNA
 
class  EBPFHashAlgorithmTypeFactoryPNA
 
class  EBPFHashPNA
 
class  EBPFInternetChecksumPNA
 
class  EBPFMeterPNA
 
class  EBPFPnaParser
 
class  EBPFRandomPNA
 
class  EBPFRegisterPNA
 
class  EBPFTablePNA
 
class  EBPFTablePNADirectCounterPropertyVisitor
 
class  EBPFTablePNADirectMeterPropertyVisitor
 
class  Extern
 
struct  ExternAttributes
 
struct  ExternInstancesAttributes
 
class  HashAlgorithmPNA
 
class  IngressDeparserPNA
 
class  InspectPnaProgram
 
class  InternetChecksumAlgorithmPNA
 
class  IntrospectionGenerator
 This pass generates introspection JSON into user specified file. More...
 
struct  IntrospectionInfo
 
struct  KeyFieldAttributes
 
class  MidEnd
 
class  ParsePnaArchitecture
 
class  ParseTCAnnotations
 
class  PNAArchTC
 
class  PNAEbpfGenerator
 
class  PNAErrorCodesGen
 
class  PnaProgramStructure
 
class  PnaStateTranslationVisitor
 
class  ScanWidths
 
struct  stmtlist
 
struct  TableAttributes
 
class  TCIngressPipelinePNA
 
class  TCOptions
 
class  WidthRec
 
union  WidthRec.u
 
struct  WidthRec.u.arith
 
struct  WidthRec.u.assign
 
struct  WidthRec.u.bxsmul
 
struct  WidthRec.u.cast
 
struct  WidthRec.u.cmp
 
struct  WidthRec.u.concat
 
struct  WidthRec.u.sarith
 
struct  WidthRec.u.shift_c
 
struct  WidthRec.u.shift_x
 

Typedefs

typedef struct container CONTAINER
 
typedef struct decllist DECLLIST
 
typedef struct stmtlist STMTLIST
 
using TCContext = P4CContextWithOptions<TCOptions>
 

Enumerations

enum  ActionScope { TableOnly , DefaultOnly , TableAndDefault }
 
enum  block_t { PARSER , PIPELINE , DEPARSER }
 
enum  WrType {
  WR_VALUE = 1 , WR_CONCAT , WR_ADD , WR_SUB ,
  WR_MUL , WR_BXSMUL , WR_CAST , WR_NEG ,
  WR_NOT , WR_SHL_X , WR_SHL_C , WR_SHRA_X ,
  WR_SHRA_C , WR_SHRL_X , WR_SHRL_C , WR_CMP ,
  WR_BITAND , WR_BITOR , WR_BITXOR , WR_ADDSAT ,
  WR_SUBSAT , WR_ASSIGN
}
 

Variables

constexpr auto BE16_TYPE = 5
 
constexpr auto BE32_TYPE = 6
 
constexpr auto BE64_TYPE = 7
 
constexpr auto BIT_TYPE = 0
 
constexpr auto BITWIDTH = 32
 
constexpr auto DEFAULT_ADD_ON_MISS_TABLE_CONTROL_PATH_ACCESS = "CRUDPS"
 
constexpr auto DEFAULT_ADD_ON_MISS_TABLE_DATA_PATH_ACCESS = "CRXP"
 
constexpr auto DEFAULT_EXTERN_CONTROL_PATH_ACCESS = "RUPS"
 
constexpr auto DEFAULT_EXTERN_DATA_PATH_ACCESS = "RUXP"
 
constexpr auto DEFAULT_KEY_ID = 1
 
constexpr auto DEFAULT_KEY_MASK = 8
 
constexpr auto DEFAULT_KEY_MASK_EXACT = 1
 
constexpr auto DEFAULT_METADATA_ID = 1
 
constexpr auto DEFAULT_TABLE_CONTROL_PATH_ACCESS = "CRUDPS"
 
constexpr auto DEFAULT_TABLE_DATA_PATH_ACCESS = "RX"
 
constexpr auto DEFAULT_TABLE_ENTRIES = 1024
 
constexpr auto DEFAULT_TIMER_PROFILES = 4
 
constexpr auto DEFAULTONLY = 2
 
constexpr auto DEV_TYPE = 1
 
constexpr auto EXACT_TYPE = 0
 
constexpr auto IN = 1
 
constexpr auto INOUT = 3
 
constexpr auto INPUT_CLASS_OF_SERVICE = 3
 
constexpr auto INPUT_INPUT_PORT = 4
 
constexpr auto INPUT_PARSER_ERROR = 2
 
constexpr auto INPUT_RECIRCULATED = 0
 
constexpr auto INPUT_TIMESTAMP = 1
 
constexpr auto IPV4_TYPE = 3
 
constexpr auto IPV6_TYPE = 4
 
constexpr auto LPM_TYPE = 1
 
constexpr auto MACADDR_TYPE = 2
 
constexpr auto MAX_PNA_INPUT_META = 5
 
constexpr auto MAX_PNA_OUTPUT_META = 1
 
constexpr auto MAX_PNA_PARSER_META = 2
 
constexpr auto NONE = 0
 
constexpr auto OUT = 2
 
constexpr auto OUTPUT_CLASS_OF_SERVICE = 0
 
constexpr auto PARAM_INDEX_0 = 0
 
constexpr auto PARAM_INDEX_1 = 1
 
constexpr auto PARAM_INDEX_2 = 2
 
constexpr auto PARAM_INDEX_3 = 3
 
constexpr auto PARSER_INPUT_PORT = 1
 
constexpr auto PARSER_RECIRCULATED = 0
 
const cstring pnaInputMeta = "pna_main_input_metadata_t"_cs
 
cstring PnaMainInputMetaFields [TC::MAX_PNA_INPUT_META]
 
cstring pnaMainInputMetaFields [TC::MAX_PNA_INPUT_META]
 
cstring PnaMainOutputMetaFields [TC::MAX_PNA_OUTPUT_META]
 
cstring pnaMainOutputMetaFields [TC::MAX_PNA_OUTPUT_META] = {"class_of_service"_cs}
 
cstring PnaMainParserInputMetaFields [TC::MAX_PNA_PARSER_META]
 
cstring pnaMainParserInputMetaFields [TC::MAX_PNA_PARSER_META]
 
const cstring pnaOutputMeta = "pna_main_output_metadata_t"_cs
 
const cstring pnaParserMeta = "pna_main_parser_input_metadata_t"_cs
 
constexpr auto PORTID_BITWIDTH = 32
 
constexpr auto RESET = 0
 
constexpr auto SET = 1
 
constexpr auto SKBIIF = 3
 
constexpr auto SKBPRIO = 5
 
constexpr auto SKBREDIR = 2
 
constexpr auto SKBTSTAMP = 4
 
constexpr auto TABLEDEFAULT = 0
 
constexpr auto TABLEONLY = 1
 
constexpr auto TERNARY_TYPE = 2
 
constexpr auto UNDEFINED = 0
 
constexpr auto UNSUPPORTED = 1
 

Detailed Description

This file defines functions for the pass to generate the introspection file.

This file declares the different structures to be used in the introspection json file and the pass to generate the file An introspection json file generated by the tc backend is used for control plane programming by P4TC in Linux kernel


Class Documentation

◆ P4::TC::container

struct P4::TC::container
Class Members
CONTAINER * link
Statement * s
STMTLIST * stmts
DECLLIST * temps

◆ P4::TC::decllist

struct P4::TC::decllist
Class Members
Declaration * decl
DECLLIST * link

◆ P4::TC::stmtlist

struct P4::TC::stmtlist
Class Members
STMTLIST * link
Statement * stmt

◆ P4::TC::WidthRec.u

union P4::TC::WidthRec.u
Class Members
struct WidthRec.u.arith arith
struct WidthRec.u.assign assign
struct WidthRec.u.bxsmul bxsmul
struct WidthRec.u.cast cast
struct WidthRec.u.cmp cmp
struct WidthRec.u.concat concat
struct WidthRec.u.sarith sarith
struct WidthRec.u.shift_c shift_c
struct WidthRec.u.shift_x shift_x
int value

◆ P4::TC::WidthRec.u.arith

struct P4::TC::WidthRec.u.arith
Class Members
int w

◆ P4::TC::WidthRec.u.assign

struct P4::TC::WidthRec.u.assign
Class Members
int w

◆ P4::TC::WidthRec.u.bxsmul

struct P4::TC::WidthRec.u.bxsmul
Class Members
int bw
unsigned int sv

◆ P4::TC::WidthRec.u.cast

struct P4::TC::WidthRec.u.cast
Class Members
int fw
int tw

◆ P4::TC::WidthRec.u.cmp

struct P4::TC::WidthRec.u.cmp
Class Members
unsigned char cmp
int w

◆ P4::TC::WidthRec.u.concat

struct P4::TC::WidthRec.u.concat
Class Members
int lhsw
int rhsw

◆ P4::TC::WidthRec.u.sarith

struct P4::TC::WidthRec.u.sarith
Class Members
bool issigned
int w

◆ P4::TC::WidthRec.u.shift_c

struct P4::TC::WidthRec.u.shift_c
Class Members
int lw
unsigned int sv

◆ P4::TC::WidthRec.u.shift_x

struct P4::TC::WidthRec.u.shift_x
Class Members
int lw
int rw

Variable Documentation

◆ pnaMainInputMetaFields

cstring P4::TC::pnaMainInputMetaFields[TC::MAX_PNA_INPUT_META]
Initial value:
= {
"recirculated"_cs, "timestamp"_cs, "parser_error"_cs, "class_of_service"_cs, "input_port"_cs}

◆ pnaMainParserInputMetaFields

cstring P4::TC::pnaMainParserInputMetaFields[TC::MAX_PNA_PARSER_META]
Initial value:
= {"recirculated"_cs,
"input_port"_cs}