Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(c) 2010-2018 Intel Corporation 3 : : */ 4 : : 5 : : /** 6 : : * @file 7 : : * Stores functions and path defines for files and directories 8 : : * on the filesystem for Linux, that are used by the Linux EAL. 9 : : */ 10 : : 11 : : #ifndef EAL_FILESYSTEM_H 12 : : #define EAL_FILESYSTEM_H 13 : : 14 : : /** Path of rte config file. */ 15 : : 16 : : #include <stdint.h> 17 : : #include <limits.h> 18 : : #include <unistd.h> 19 : : #include <stdlib.h> 20 : : 21 : : #include <rte_string_fns.h> 22 : : #include "eal_internal_cfg.h" 23 : : 24 : : /* sets up platform-specific runtime data dir */ 25 : : int 26 : : eal_create_runtime_dir(void); 27 : : 28 : : int 29 : : eal_clean_runtime_dir(void); 30 : : 31 : : /** Function to return hugefile prefix that's currently set up */ 32 : : const char * 33 : : eal_get_hugefile_prefix(void); 34 : : 35 : : #define RUNTIME_CONFIG_FNAME "config" 36 : : static inline const char * 37 : 188 : eal_runtime_config_path(void) 38 : : { 39 : : static char buffer[PATH_MAX]; /* static so auto-zeroed */ 40 : : 41 : 188 : snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(), 42 : : RUNTIME_CONFIG_FNAME); 43 : 188 : return buffer; 44 : : } 45 : : 46 : : /** Path of primary/secondary communication unix socket file. */ 47 : : #define MP_SOCKET_FNAME "mp_socket" 48 : : static inline const char * 49 : 763 : eal_mp_socket_path(void) 50 : : { 51 : : static char buffer[PATH_MAX]; /* static so auto-zeroed */ 52 : : 53 : 763 : snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(), 54 : : MP_SOCKET_FNAME); 55 : 763 : return buffer; 56 : : } 57 : : 58 : : #define FBARRAY_NAME_FMT "%s/fbarray_%s" 59 : : static inline const char * 60 : 1350 : eal_get_fbarray_path(char *buffer, size_t buflen, const char *name) { 61 : 1350 : snprintf(buffer, buflen, FBARRAY_NAME_FMT, rte_eal_get_runtime_dir(), 62 : : name); 63 : 1350 : return buffer; 64 : : } 65 : : 66 : : /** Path of hugepage info file. */ 67 : : #define HUGEPAGE_INFO_FNAME "hugepage_info" 68 : : static inline const char * 69 : 81 : eal_hugepage_info_path(void) 70 : : { 71 : : static char buffer[PATH_MAX]; /* static so auto-zeroed */ 72 : : 73 : 81 : snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(), 74 : : HUGEPAGE_INFO_FNAME); 75 : 81 : return buffer; 76 : : } 77 : : 78 : : /** Path of hugepage data file. */ 79 : : #define HUGEPAGE_DATA_FNAME "hugepage_data" 80 : : static inline const char * 81 : 4 : eal_hugepage_data_path(void) 82 : : { 83 : : static char buffer[PATH_MAX]; /* static so auto-zeroed */ 84 : : 85 : 4 : snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(), 86 : : HUGEPAGE_DATA_FNAME); 87 : 4 : return buffer; 88 : : } 89 : : 90 : : /** String format for hugepage map files. */ 91 : : #define HUGEFILE_FMT "%s/%smap_%d" 92 : : static inline const char * 93 : 4149 : eal_get_hugefile_path(char *buffer, size_t buflen, const char *hugedir, int f_id) 94 : : { 95 : 4149 : snprintf(buffer, buflen, HUGEFILE_FMT, hugedir, 96 : : eal_get_hugefile_prefix(), f_id); 97 : 4149 : return buffer; 98 : : } 99 : : 100 : : /** define the default filename prefix for the %s values above */ 101 : : #define HUGEFILE_PREFIX_DEFAULT "rte" 102 : : 103 : : /** Function to read a single numeric value from a file on the filesystem. 104 : : * Used to read information from files on /sys */ 105 : : int eal_parse_sysfs_value(const char *filename, unsigned long *val); 106 : : 107 : : #endif /* EAL_FILESYSTEM_H */