xref: /dpdk/lib/eal/common/eal_common_config.c (revision 97b914f4e715565d53d38ac6e04815b9be5e58a9)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Mellanox Technologies, Ltd
3  */
4 #include <string.h>
5 
6 #include <rte_string_fns.h>
7 
8 #include "eal_private.h"
9 #include "eal_memcfg.h"
10 
11 /* early configuration structure, when memory config is not mmapped */
12 static struct rte_mem_config early_mem_config;
13 
14 /* Address of global and public configuration */
15 static struct rte_config rte_config = {
16 	.mem_config = &early_mem_config,
17 };
18 
19 /* platform-specific runtime dir */
20 static char runtime_dir[PATH_MAX];
21 
22 /* internal configuration */
23 static struct internal_config internal_config;
24 
25 const char *
26 rte_eal_get_runtime_dir(void)
27 {
28 	return runtime_dir;
29 }
30 
31 int
32 eal_set_runtime_dir(const char *run_dir)
33 {
34 	if (strlcpy(runtime_dir, run_dir, PATH_MAX) >= PATH_MAX) {
35 		RTE_LOG(ERR, EAL, "Runtime directory string too long\n");
36 		return -1;
37 	}
38 
39 	return 0;
40 }
41 
42 /* Return a pointer to the configuration structure */
43 struct rte_config *
44 rte_eal_get_configuration(void)
45 {
46 	return &rte_config;
47 }
48 
49 /* Return a pointer to the internal configuration structure */
50 struct internal_config *
51 eal_get_internal_configuration(void)
52 {
53 	return &internal_config;
54 }
55 
56 enum rte_iova_mode
57 rte_eal_iova_mode(void)
58 {
59 	return rte_eal_get_configuration()->iova_mode;
60 }
61 
62 /* Get the EAL base address */
63 uint64_t
64 rte_eal_get_baseaddr(void)
65 {
66 	return (internal_config.base_virtaddr != 0) ?
67 		       (uint64_t) internal_config.base_virtaddr :
68 		       eal_get_baseaddr();
69 }
70 
71 enum rte_proc_type_t
72 rte_eal_process_type(void)
73 {
74 	return rte_config.process_type;
75 }
76 
77 /* Return user provided mbuf pool ops name */
78 const char *
79 rte_eal_mbuf_user_pool_ops(void)
80 {
81 	return internal_config.user_mbuf_pool_ops_name;
82 }
83 
84 /* return non-zero if hugepages are enabled. */
85 int
86 rte_eal_has_hugepages(void)
87 {
88 	return !internal_config.no_hugetlbfs;
89 }
90 
91 int
92 rte_eal_has_pci(void)
93 {
94 	return !internal_config.no_pci;
95 }
96