#endif
#include <stdint.h>
-
#include "arch/rte_atomic.h"
printf("\nUsage: %s -c COREMASK -n NUM [-m NB] [-r NUM] [-b <domain:bus:devid.func>]"
"[--proc-type primary|secondary|auto] \n\n"
"EAL options:\n"
- " -c COREMASK: A hexadecimal bitmask of cores to run on\n"
- " -n NUM : Number of memory channels\n"
- " -v : Display version information on startup\n"
- " -b <domain:bus:devid.func>: to prevent EAL from using specified PCI device\n"
- " (multiple -b options are alowed)\n"
- " -m MB : memory to allocate (default = size of hugemem)\n"
- " -r NUM : force number of memory ranks (don't detect)\n"
- " --"OPT_HUGE_DIR" : directory where hugetlbfs is mounted\n"
- " --"OPT_PROC_TYPE": type of this process\n"
+ " -c COREMASK : A hexadecimal bitmask of cores to run on\n"
+ " -n NUM : Number of memory channels\n"
+ " -v : Display version information on startup\n"
+ " -b <domain:bus:devid.func>: to prevent EAL from using specified "
+ "PCI device\n"
+ " (multiple -b options are allowed)\n"
+ " -m MB : memory to allocate (see also --"OPT_SOCKET_MEM")\n"
+ " -r NUM : force number of memory ranks (don't detect)\n"
+ " --"OPT_HUGE_DIR" : directory where hugetlbfs is mounted\n"
+ " --"OPT_PROC_TYPE" : type of this process\n"
" --"OPT_FILE_PREFIX": prefix for hugepage filenames\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_NO_HUGE" : use malloc instead of hugetlbfs\n"
fd = open(hugepg_tbl[i].filepath, O_CREAT | O_RDWR, 0755);
if (fd < 0) {
- RTE_LOG(ERR, EAL, "%s(): open failed: %s", __func__,
+ RTE_LOG(ERR, EAL, "%s(): open failed: %s\n", __func__,
strerror(errno));
return -1;
}
virtaddr = mmap(vma_addr, hugepage_sz, PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);
if (virtaddr == MAP_FAILED) {
- RTE_LOG(ERR, EAL, "%s(): mmap failed: %s", __func__,
+ RTE_LOG(ERR, EAL, "%s(): mmap failed: %s\n", __func__,
strerror(errno));
close(fd);
return -1;
}
+
if (orig) {
hugepg_tbl[i].orig_va = virtaddr;
memset(virtaddr, 0, hugepage_sz);
fd = open("/proc/self/pagemap", O_RDONLY);
if (fd < 0) {
- RTE_LOG(ERR, EAL, "%s(): cannot open /proc/self/pagemap: %s",
+ RTE_LOG(ERR, EAL, "%s(): cannot open /proc/self/pagemap: %s\n",
__func__, strerror(errno));
return -1;
}
page_size;
offset = sizeof(uint64_t) * virt_pfn;
if (lseek(fd, offset, SEEK_SET) != offset){
- RTE_LOG(ERR, EAL, "%s(): seek error in /proc/self/pagemap: %s",
+ RTE_LOG(ERR, EAL, "%s(): seek error in /proc/self/pagemap: %s\n",
__func__, strerror(errno));
close(fd);
return -1;
}
if (read(fd, &page, sizeof(uint64_t)) < 0) {
- RTE_LOG(ERR, EAL, "%s(): cannot read /proc/self/pagemap: %s",
+ RTE_LOG(ERR, EAL, "%s(): cannot read /proc/self/pagemap: %s\n",
__func__, strerror(errno));
close(fd);
return -1;
f = fopen("/proc/self/numa_maps", "r");
if (f == NULL) {
RTE_LOG(INFO, EAL, "cannot open /proc/self/numa_maps,"
- "consider that all memory is in socket_id 0");
+ " consider that all memory is in socket_id 0\n");
return 0;
}
/*
* Uses mmap to create a shared memory area for storage of data
- *Used in this file to store the hugepage file map on disk
+ * Used in this file to store the hugepage file map on disk
*/
static void *
create_shared_memory(const char *filename, const size_t mem_size)
* mount points of hugepages
*/
struct hugepage_info {
- uint64_t hugepage_sz; /**< size of a huge page */
- const char *hugedir; /**< dir where hugetlbfs is mounted */
- uint32_t num_pages; /**< number of hugepages of that size */
+ uint64_t hugepage_sz; /**< size of a huge page */
+ const char *hugedir; /**< dir where hugetlbfs is mounted */
+ uint32_t num_pages; /**< number of hugepages of that size */
};
/**
* internal configuration
*/
struct internal_config {
- volatile uint64_t memory; /* amount of asked memory */
- volatile unsigned force_nchannel; /* force number of channels */
- volatile unsigned force_nrank; /* force number of ranks */
- volatile unsigned no_hugetlbfs; /* true to disable hugetlbfs */
- volatile unsigned no_pci; /* true to disable PCI */
- volatile unsigned no_hpet; /* true to disable HPET */
- volatile unsigned no_shconf; /* true if there is no shared config */
+ volatile uint64_t memory; /**< amount of asked memory */
+ volatile unsigned force_nchannel; /**< force number of channels */
+ volatile unsigned force_nrank; /**< force number of ranks */
+ volatile unsigned no_hugetlbfs; /**< true to disable hugetlbfs */
+ volatile unsigned no_pci; /**< true to disable PCI */
+ volatile unsigned no_hpet; /**< true to disable HPET */
+ volatile unsigned no_shconf; /**< true if there is no shared config */
volatile enum rte_proc_type_t process_type; /* multi-process proc type */
- const char *hugefile_prefix; /* the base filename of hugetlbfs files */
- const char *hugepage_dir; /* specific hugetlbfs directory to use */
+ const char *hugefile_prefix; /**< the base filename of hugetlbfs files */
+ const char *hugepage_dir; /**< specific hugetlbfs directory to use */
- unsigned num_hugepage_sizes; /* how many sizes on this system */
+ unsigned num_hugepage_sizes; /**< how many sizes on this system */
struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
};
extern struct internal_config internal_config; /**< Global EAL configuration. */