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