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
13namespace P4::EBPF {
14
16
17class 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_
Definition ebpf/codeGen.h:33
Definition ebpf/codeGen.h:41
Definition ebpfPsaControl.h:20
Definition ebpfProgram.h:30
const IR::Constant * initialValue
Definition ebpfPsaRegister.h:22
Base class for EBPF types.
Definition ebpfType.h:29
Definition methodInstance.h:168
Definition cstring.h:85
Definition codeGen.cpp:25