File: eal.py

package info (click to toggle)
dpdk 25.11-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 127,892 kB
  • sloc: ansic: 2,358,479; python: 16,426; sh: 4,474; makefile: 1,713; awk: 70
file content (56 lines) | stat: -rw-r--r-- 2,073 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2024 Arm Limited

"""Module representing the DPDK EAL-related parameters."""

from dataclasses import dataclass, field
from typing import TYPE_CHECKING, Literal

from framework.params import Params, Switch
from framework.testbed_model.cpu import LogicalCoreList
from framework.testbed_model.virtual_device import VirtualDevice

if TYPE_CHECKING:
    from framework.testbed_model.port import Port


def _port_to_pci(port: "Port") -> str:
    return port.pci


@dataclass(kw_only=True)
class EalParams(Params):
    """The environment abstraction layer parameters.

    Attributes:
        lcore_list: The list of logical cores to use.
        memory_channels: The number of memory channels to use.
        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix="vf"``.
        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.
        vdevs: Virtual devices, e.g.::

            vdevs = [VirtualDevice("net_ring0"), VirtualDevice("net_ring1")]

        ports: The list of ports to allow.
        other_eal_param: user defined DPDK EAL parameters, e.g.::

            ``other_eal_param='--single-file-segments'``
    """

    lcore_list: LogicalCoreList | None = field(default=None, metadata=Params.short("l"))
    memory_channels: int | None = field(default=None, metadata=Params.short("n"))
    prefix: str = field(default="dpdk", metadata=Params.long("file-prefix"))
    no_pci: Switch = None
    vdevs: list[VirtualDevice] | None = field(
        default=None, metadata=Params.multiple() | Params.long("vdev")
    )
    allowed_ports: list["Port"] | None = field(
        default=None,
        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("a"),
    )
    blocked_ports: list["Port"] | None = field(
        default=None,
        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short("b"),
    )
    other_eal_param: Params | None = None
    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short("-"))