10/06/2020 16:27, Dmitry Kozlyuk: > +eal_memseg_list_init_named(struct rte_memseg_list *msl, const char *name, > + uint64_t page_sz, int n_segs, int socket_id, bool heap) > +{ > + if (rte_fbarray_init(&msl->memseg_arr, name, n_segs, > + sizeof(struct rte_memseg))) { > + RTE_LOG(ERR, EAL, "Cannot allocate memseg list: %s\n", > + rte_strerror(rte_errno)); > + return -1; > + } > + > + msl->page_sz = page_sz; > + msl->socket_id = socket_id; > + msl->base_va = NULL; > + msl->heap = heap; > + > + RTE_LOG(DEBUG, EAL, > + "Memseg list allocated at socket %i, page size 0x%zxkB\n", > + socket_id, (size_t)page_sz >> 10);
page_sz is uint64_t, so the right printf specifier is PRIx64. [...] > +#ifndef RTE_EXEC_ENV_WINDOWS > + /* The hint would be misleading on Windows, but this function Would be better to explain the reason of misleading in this comment. > + * is called from many places, including common code, > + * so don't duplicate the message. > + */ > + if (rte_errno == EADDRNOTAVAIL) > + RTE_LOG(ERR, EAL, "Cannot reserve %llu bytes at [%p] - " > + "please use '--" OPT_BASE_VIRTADDR "' option\n", > + (unsigned long long)mem_sz, msl->base_va); > +#endif [...] > + if (memseg_list_alloc(msl) < 0) { > + RTE_LOG(ERR, EAL, > + "Cannot preallocate %zukB hugepages\n", > + page_sz >> 10); page_sz is uint64_t, so the right printf specifier is PRIx64.