P4C
The P4 Compiler
Loading...
Searching...
No Matches
ebpfPsaRegister.h
1
/*
2
* SPDX-FileCopyrightText: 2022 Open Networking Foundation
3
* SPDX-FileCopyrightText: 2022 Orange
4
*
5
* SPDX-License-Identifier: Apache-2.0
6
*/
7
#ifndef BACKENDS_EBPF_PSA_EXTERNS_EBPFPSAREGISTER_H_
8
#define BACKENDS_EBPF_PSA_EXTERNS_EBPFPSAREGISTER_H_
9
10
#include "backends/ebpf/ebpfTable.h"
11
#include "backends/ebpf/ebpfType.h"
12
13
namespace
P4::EBPF
{
14
15
class
ControlBodyTranslatorPSA
;
16
17
class
EBPFRegisterPSA :
public
EBPFTableBase {
18
protected
:
19
size_t
size;
22
const
IR::Constant *
initialValue
=
nullptr
;
23
const
IR::Type *keyArg;
24
const
IR::Type *valueArg;
25
EBPFType
*keyType;
26
EBPFType
*valueType;
27
28
bool
shouldUseArrayMap();
29
30
public
:
31
EBPFRegisterPSA(
const
EBPFProgram
*program,
cstring
instanceName,
32
const
IR::Declaration_Instance *di,
CodeGenInspector
*codeGen);
33
34
void
emitTypes(
CodeBuilder
*builder);
35
void
emitKeyType(
CodeBuilder
*builder);
36
void
emitValueType(
CodeBuilder
*builder);
37
38
void
emitInitializer(
CodeBuilder
*builder);
39
void
emitInstance(
CodeBuilder
*builder);
40
void
emitRegisterRead(
CodeBuilder
*builder,
const
P4::ExternMethod
*method,
41
ControlBodyTranslatorPSA
*translator,
42
const
IR::Expression *leftExpression);
43
void
emitRegisterWrite(
CodeBuilder
*builder,
const
P4::ExternMethod
*method,
44
ControlBodyTranslatorPSA
*translator);
45
};
46
47
}
// namespace P4::EBPF
48
49
#endif
// BACKENDS_EBPF_PSA_EXTERNS_EBPFPSAREGISTER_H_
P4::EBPF::CodeBuilder
Definition
ebpf/codeGen.h:33
P4::EBPF::CodeGenInspector
Definition
ebpf/codeGen.h:41
P4::EBPF::ControlBodyTranslatorPSA
Definition
ebpfPsaControl.h:20
P4::EBPF::EBPFProgram
Definition
ebpfProgram.h:30
P4::EBPF::EBPFRegisterPSA::initialValue
const IR::Constant * initialValue
Definition
ebpfPsaRegister.h:22
P4::EBPF::EBPFType
Base class for EBPF types.
Definition
ebpfType.h:29
P4::ExternMethod
Definition
methodInstance.h:168
P4::cstring
Definition
cstring.h:85
P4::EBPF
Definition
codeGen.cpp:25
backends
ebpf
psa
externs
ebpfPsaRegister.h
Generated by
1.13.2