dpdk/lib/eal/common/eal_internal_cfg.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright(c) 2010-2014 Intel Corporation
   3 */
   4
   5/**
   6 * @file
   7 * Holds the structures for the eal internal configuration
   8 */
   9
  10#ifndef EAL_INTERNAL_CFG_H
  11#define EAL_INTERNAL_CFG_H
  12
  13#include <rte_eal.h>
  14#include <rte_os_shim.h>
  15#include <rte_pci_dev_feature_defs.h>
  16
  17#include "eal_thread.h"
  18
  19#if defined(RTE_ARCH_ARM)
  20#define MAX_HUGEPAGE_SIZES 4  /**< support up to 4 page sizes */
  21#else
  22#define MAX_HUGEPAGE_SIZES 3  /**< support up to 3 page sizes */
  23#endif
  24
  25/*
  26 * internal configuration structure for the number, size and
  27 * mount points of hugepages
  28 */
  29struct hugepage_info {
  30        uint64_t hugepage_sz;   /**< size of a huge page */
  31        char hugedir[PATH_MAX];    /**< dir where hugetlbfs is mounted */
  32        uint32_t num_pages[RTE_MAX_NUMA_NODES];
  33        /**< number of hugepages of that size on each socket */
  34        int lock_descriptor;    /**< file descriptor for hugepage dir */
  35};
  36
  37struct simd_bitwidth {
  38        bool forced;
  39        /**< flag indicating if bitwidth is forced and can't be modified */
  40        uint16_t bitwidth; /**< bitwidth value */
  41};
  42
  43/**
  44 * internal configuration
  45 */
  46struct internal_config {
  47        volatile size_t memory;           /**< amount of asked memory */
  48        volatile unsigned force_nchannel; /**< force number of channels */
  49        volatile unsigned force_nrank;    /**< force number of ranks */
  50        volatile unsigned no_hugetlbfs;   /**< true to disable hugetlbfs */
  51        unsigned hugepage_unlink;         /**< true to unlink backing files */
  52        volatile unsigned no_pci;         /**< true to disable PCI */
  53        volatile unsigned no_hpet;        /**< true to disable HPET */
  54        volatile unsigned vmware_tsc_map; /**< true to use VMware TSC mapping
  55                                                                                * instead of native TSC */
  56        volatile unsigned no_shconf;      /**< true if there is no shared config */
  57        volatile unsigned in_memory;
  58        /**< true if DPDK should operate entirely in-memory and not create any
  59         * shared files or runtime data.
  60         */
  61        volatile unsigned create_uio_dev; /**< true to create /dev/uioX devices */
  62        volatile enum rte_proc_type_t process_type; /**< multi-process proc type */
  63        /** true to try allocating memory on specific sockets */
  64        volatile unsigned force_sockets;
  65        volatile uint64_t socket_mem[RTE_MAX_NUMA_NODES]; /**< amount of memory per socket */
  66        volatile unsigned force_socket_limits;
  67        volatile uint64_t socket_limit[RTE_MAX_NUMA_NODES]; /**< limit amount of memory per socket */
  68        uintptr_t base_virtaddr;          /**< base address to try and reserve memory from */
  69        volatile unsigned legacy_mem;
  70        /**< true to enable legacy memory behavior (no dynamic allocation,
  71         * IOVA-contiguous segments).
  72         */
  73        volatile unsigned match_allocations;
  74        /**< true to free hugepages exactly as allocated */
  75        volatile unsigned single_file_segments;
  76        /**< true if storing all pages within single files (per-page-size,
  77         * per-node) non-legacy mode only.
  78         */
  79        volatile int syslog_facility;     /**< facility passed to openlog() */
  80        /** default interrupt mode for VFIO */
  81        volatile enum rte_intr_mode vfio_intr_mode;
  82        /** the shared VF token for VFIO-PCI bound PF and VFs devices */
  83        rte_uuid_t vfio_vf_token;
  84        char *hugefile_prefix;      /**< the base filename of hugetlbfs files */
  85        char *hugepage_dir;         /**< specific hugetlbfs directory to use */
  86        char *user_mbuf_pool_ops_name;
  87                        /**< user defined mbuf pool ops name */
  88        unsigned num_hugepage_sizes;      /**< how many sizes on this system */
  89        struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
  90        enum rte_iova_mode iova_mode ;    /**< Set IOVA mode on this system  */
  91        rte_cpuset_t ctrl_cpuset;         /**< cpuset for ctrl threads */
  92        volatile unsigned int init_complete;
  93        /**< indicates whether EAL has completed initialization */
  94        unsigned int no_telemetry; /**< true to disable Telemetry */
  95        struct simd_bitwidth max_simd_bitwidth;
  96        /**< max simd bitwidth path to use */
  97};
  98
  99void eal_reset_internal_config(struct internal_config *internal_cfg);
 100
 101#endif /* EAL_INTERNAL_CFG_H */
 102