P4C
The P4 Compiler
Loading...
Searching...
No Matches
EBPF::KernelSamplesTarget Class Reference

#include <target.h>

Inheritance diagram for EBPF::KernelSamplesTarget:
[legend]

Public Member Functions

 KernelSamplesTarget (bool emitTrace=false, cstring name="Linux kernel"_cs)
 
cstring abortReturnCode () const override
 
void annotateTableWithBTF (Util::SourceCodeBuilder *builder, cstring name, cstring keyType, cstring valueType) const
 
cstring dataEnd (cstring base) const override
 
cstring dataLength (cstring base) const override
 
cstring dataOffset (cstring base) const override
 
cstring dropReturnCode () const override
 
void emitCodeSection (Util::SourceCodeBuilder *builder, cstring sectionName) const override
 
void emitIncludes (Util::SourceCodeBuilder *builder) const override
 
void emitLicense (Util::SourceCodeBuilder *builder, cstring license) const override
 
void emitMain (Util::SourceCodeBuilder *builder, cstring functionName, cstring argName) const override
 
void emitMapInMapDecl (Util::SourceCodeBuilder *builder, cstring innerName, TableKind innerTableKind, cstring innerKeyType, cstring innerValueType, unsigned innerSize, cstring outerName, TableKind outerTableKind, cstring outerKeyType, unsigned outerSize) const override
 
void emitPreamble (Util::SourceCodeBuilder *builder) const override
 
void emitResizeBuffer (Util::SourceCodeBuilder *builder, cstring buffer, cstring offsetVar) const override
 
void emitTableDecl (Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind, cstring keyType, cstring valueType, unsigned size) const override
 
void emitTableDeclSpinlock (Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind, cstring keyType, cstring valueType, unsigned size) const override
 
void emitTableLookup (Util::SourceCodeBuilder *builder, cstring tblName, cstring key, cstring value) const override
 
void emitTableUpdate (Util::SourceCodeBuilder *builder, cstring tblName, cstring key, cstring value) const override
 
void emitTraceMessage (Util::SourceCodeBuilder *builder, const char *format, int argc=0,...) const override
 
void emitUserTableUpdate (Util::SourceCodeBuilder *builder, cstring tblName, cstring key, cstring value) const override
 
cstring forwardReturnCode () const override
 
cstring packetDescriptorType () const override
 
cstring sysMapPath () const override
 
- Public Member Functions inherited from EBPF::Target
virtual void emitTraceMessage (Util::SourceCodeBuilder *builder, const char *format) const
 

Protected Attributes

bool emitTraceMessages
 

Additional Inherited Members

- Public Attributes inherited from EBPF::Target
const cstring name
 
- Protected Member Functions inherited from EBPF::Target
 Target (cstring name)
 

Detailed Description

Represents a target that is compiled within the kernel. source tree samples folder and which attaches to a socket.

Member Function Documentation

◆ abortReturnCode()

cstring EBPF::KernelSamplesTarget::abortReturnCode ( ) const
inlineoverridevirtual

Implements EBPF::Target.

◆ dataEnd()

cstring EBPF::KernelSamplesTarget::dataEnd ( cstring base) const
inlineoverridevirtual

Implements EBPF::Target.

◆ dataLength()

cstring EBPF::KernelSamplesTarget::dataLength ( cstring base) const
inlineoverridevirtual

Implements EBPF::Target.

◆ dataOffset()

cstring EBPF::KernelSamplesTarget::dataOffset ( cstring base) const
inlineoverridevirtual

Implements EBPF::Target.

◆ dropReturnCode()

cstring EBPF::KernelSamplesTarget::dropReturnCode ( ) const
inlineoverridevirtual

Implements EBPF::Target.

◆ emitCodeSection()

void EBPF::KernelSamplesTarget::emitCodeSection ( Util::SourceCodeBuilder * builder,
cstring sectionName ) const
overridevirtual

Implements EBPF::Target.

◆ emitIncludes()

void EBPF::KernelSamplesTarget::emitIncludes ( Util::SourceCodeBuilder * builder) const
overridevirtual

Implements EBPF::Target.

◆ emitLicense()

void EBPF::KernelSamplesTarget::emitLicense ( Util::SourceCodeBuilder * builder,
cstring license ) const
overridevirtual

Implements EBPF::Target.

◆ emitMain()

void EBPF::KernelSamplesTarget::emitMain ( Util::SourceCodeBuilder * builder,
cstring functionName,
cstring argName ) const
overridevirtual

Implements EBPF::Target.

◆ emitMapInMapDecl()

void EBPF::KernelSamplesTarget::emitMapInMapDecl ( Util::SourceCodeBuilder * builder,
cstring innerName,
TableKind innerTableKind,
cstring innerKeyType,
cstring innerValueType,
unsigned innerSize,
cstring outerName,
TableKind outerTableKind,
cstring outerKeyType,
unsigned outerSize ) const
overridevirtual

map-in-map requires declaration of both inner and outer map, thus we define them together in a single method.

Reimplemented from EBPF::Target.

◆ emitPreamble()

void EBPF::KernelSamplesTarget::emitPreamble ( Util::SourceCodeBuilder * builder) const
overridevirtual

Reimplemented from EBPF::Target.

◆ emitResizeBuffer()

void EBPF::KernelSamplesTarget::emitResizeBuffer ( Util::SourceCodeBuilder * builder,
cstring buffer,
cstring offsetVar ) const
overridevirtual

Implements EBPF::Target.

◆ emitTableDecl()

void EBPF::KernelSamplesTarget::emitTableDecl ( Util::SourceCodeBuilder * builder,
cstring tblName,
TableKind tableKind,
cstring keyType,
cstring valueType,
unsigned size ) const
overridevirtual

Implements EBPF::Target.

◆ emitTableDeclSpinlock()

void EBPF::KernelSamplesTarget::emitTableDeclSpinlock ( Util::SourceCodeBuilder * builder,
cstring tblName,
TableKind tableKind,
cstring keyType,
cstring valueType,
unsigned size ) const
overridevirtual

Reimplemented from EBPF::Target.

◆ emitTableLookup()

void EBPF::KernelSamplesTarget::emitTableLookup ( Util::SourceCodeBuilder * builder,
cstring tblName,
cstring key,
cstring value ) const
overridevirtual

Implements EBPF::Target.

◆ emitTableUpdate()

void EBPF::KernelSamplesTarget::emitTableUpdate ( Util::SourceCodeBuilder * builder,
cstring tblName,
cstring key,
cstring value ) const
overridevirtual

Implements EBPF::Target.

◆ emitTraceMessage()

void EBPF::KernelSamplesTarget::emitTraceMessage ( Util::SourceCodeBuilder * builder,
const char * format,
int argc = 0,
... ) const
overridevirtual

Emit trace message which will be printed during packet processing (if enabled).

Parameters
builderActual source code builder.
formatFormat string, interpreted by printk-like function. For more information see documentation for bpf_trace_printk.
argcNumber of variadic arguments. Up to 3 arguments can be passed due to limitation of eBPF.
...Arguments to the format string, they must be C string and valid code in C.

To print variable value: emitTraceMessage(builder, "var=%u", 1, "var_name") To print expression value: emitTraceMessage(builder, "diff=%d", 1, "var1 - var2") To print just message: emitTraceMessage(builder, "Here")

Reimplemented from EBPF::Target.

◆ emitUserTableUpdate()

void EBPF::KernelSamplesTarget::emitUserTableUpdate ( Util::SourceCodeBuilder * builder,
cstring tblName,
cstring key,
cstring value ) const
overridevirtual

Implements EBPF::Target.

◆ forwardReturnCode()

cstring EBPF::KernelSamplesTarget::forwardReturnCode ( ) const
inlineoverridevirtual

Implements EBPF::Target.

◆ packetDescriptorType()

cstring EBPF::KernelSamplesTarget::packetDescriptorType ( ) const
inlineoverridevirtual

Implements EBPF::Target.

◆ sysMapPath()

cstring EBPF::KernelSamplesTarget::sysMapPath ( ) const
inlineoverridevirtual

Implements EBPF::Target.