[RFC PATCH 01/44] eal: define new functionally distinct config structs
Bruce Richardson
bruce.richardson at intel.com
Wed Apr 29 18:57:53 CEST 2026
Rather than having a generic internal_config structure which mixes
system configuration, memory configuration, and user options in one
struct, create separate structures for the platform info, system runtime
state and the user provided config. Later patches will complete these
with data moved from the current location.
Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
lib/eal/common/eal_common_config.c | 31 ++++++++++++++++++++++++++++++
lib/eal/common/eal_internal_cfg.h | 28 +++++++++++++++++++++++++++
2 files changed, 59 insertions(+)
diff --git a/lib/eal/common/eal_common_config.c b/lib/eal/common/eal_common_config.c
index e2e69a75fb..5427b30659 100644
--- a/lib/eal/common/eal_common_config.c
+++ b/lib/eal/common/eal_common_config.c
@@ -5,6 +5,7 @@
#include <rte_string_fns.h>
#include <eal_export.h>
+#include "eal_internal_cfg.h"
#include "eal_private.h"
#include "eal_filesystem.h"
#include "eal_memcfg.h"
@@ -27,6 +28,15 @@ static struct rte_config rte_config = {
/* platform-specific runtime dir */
static char runtime_dir[UNIX_PATH_MAX];
+/* user-provided EAL configuration */
+static struct eal_user_cfg eal_user_cfg;
+
+/* platform-discovered and runtime EAL state */
+static struct eal_platform_info eal_platform_info;
+
+/* internal runtime configuration */
+static struct eal_runtime_state eal_runtime_state;
+
/* internal configuration */
static struct internal_config internal_config;
@@ -63,6 +73,27 @@ eal_get_internal_configuration(void)
return &internal_config;
}
+/* Return a pointer to the user configuration structure */
+struct eal_user_cfg *
+eal_get_user_configuration(void)
+{
+ return &eal_user_cfg;
+}
+
+/* Return a pointer to the platform state structure */
+struct eal_platform_info *
+eal_get_platform_info(void)
+{
+ return &eal_platform_info;
+}
+
+/* Return a pointer to the runtime state structure */
+struct eal_runtime_state *
+eal_get_runtime_state(void)
+{
+ return &eal_runtime_state;
+}
+
RTE_EXPORT_SYMBOL(rte_eal_iova_mode)
enum rte_iova_mode
rte_eal_iova_mode(void)
diff --git a/lib/eal/common/eal_internal_cfg.h b/lib/eal/common/eal_internal_cfg.h
index fac45cbe66..fb4afca5b8 100644
--- a/lib/eal/common/eal_internal_cfg.h
+++ b/lib/eal/common/eal_internal_cfg.h
@@ -48,6 +48,31 @@ struct hugepage_file_discipline {
bool unlink_existing;
};
+/**
+ * User-provided EAL initialization configuration.
+ * Immutable after initialization, so no need for atomic types or locks.
+ */
+struct eal_user_cfg {
+ uint8_t reserved;
+};
+
+/**
+ * Discovered information about cores, memory, etc. on the system.
+ * Immutable after initialization, so no need for atomic types or locks.
+ */
+struct eal_platform_info {
+ uint8_t reserved;
+};
+
+/**
+ * Internal EAL runtime state
+ * May be modified at runtime, so access must be protected by locks or atomic types
+ * as appropriate.
+ */
+struct eal_runtime_state {
+ uint8_t reserved;
+};
+
/**
* internal configuration
*/
@@ -107,6 +132,9 @@ struct internal_config {
unsigned int no_auto_probing; /**< true to switch from block-listing to allow-listing */
};
+struct eal_user_cfg *eal_get_user_configuration(void);
+struct eal_platform_info *eal_get_platform_info(void);
+struct eal_runtime_state *eal_get_runtime_state(void);
void eal_reset_internal_config(struct internal_config *internal_cfg);
#endif /* EAL_INTERNAL_CFG_H */
--
2.51.0
More information about the dev
mailing list