" --"OPT_NO_HPET" Disable HPET\n"
" --"OPT_NO_SHCONF" No shared config (mmap'd files)\n"
"\n", RTE_MAX_LCORE);
- rte_option_usage();
}
int
dev_sigbus_handler_unregister(void);
-/**
- * Check if the option is registered.
- *
- * @param option
- * The option to be parsed.
- *
- * @return
- * 0 on success
- * @return
- * -1 on fail
- */
-int
-rte_option_parse(const char *opt);
-
-/**
- * Iterate through the registered options and execute the associated
- * callback if enabled.
- */
-void
-rte_option_init(void);
-
-/**
- * Iterate through the registered options and show the associated
- * usage string.
- */
-void
-rte_option_usage(void);
-
/**
* Get OS-specific EAL mapping base address.
*/
'eal_common_log.c',
'eal_common_options.c',
'eal_common_thread.c',
- 'rte_option.c',
)
subdir_done()
endif
'malloc_mp.c',
'rte_keepalive.c',
'rte_malloc.c',
- 'rte_option.c',
'rte_random.c',
'rte_reciprocal.c',
'rte_service.c',
+++ /dev/null
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018 Intel Corporation.
- */
-
-#include <getopt.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <rte_eal.h>
-#include <rte_option.h>
-
-#include "eal_private.h"
-#include "eal_internal_cfg.h" /* Necessary for eal_options.h */
-#include "eal_options.h"
-
-TAILQ_HEAD(rte_option_list, rte_option);
-
-struct rte_option_list rte_option_list =
- TAILQ_HEAD_INITIALIZER(rte_option_list);
-
-int
-rte_option_parse(const char *opt)
-{
- struct rte_option *option;
-
- if (strlen(opt) <= 2 ||
- strncmp(opt, "--", 2))
- return -1;
-
- /* Check if the option is registered */
- TAILQ_FOREACH(option, &rte_option_list, next) {
- if (strcmp(&opt[2], option->name) == 0) {
- option->enabled = 1;
- return 0;
- }
- }
-
- return -1;
-}
-
-int
-rte_option_register(struct rte_option *opt)
-{
- struct rte_option *option;
- const struct option *gopt;
-
- gopt = &eal_long_options[0];
- while (gopt->name != NULL) {
- if (strcmp(gopt->name, opt->name) == 0) {
- RTE_LOG(ERR, EAL, "Option %s is already a common EAL option.\n",
- opt->name);
- return -1;
- }
- gopt++;
- }
-
- TAILQ_FOREACH(option, &rte_option_list, next) {
- if (strcmp(opt->name, option->name) == 0) {
- RTE_LOG(ERR, EAL, "Option %s has already been registered.\n",
- opt->name);
- return -1;
- }
- }
-
- TAILQ_INSERT_HEAD(&rte_option_list, opt, next);
- return 0;
-}
-
-void
-rte_option_init(void)
-{
- struct rte_option *option;
-
- TAILQ_FOREACH(option, &rte_option_list, next) {
- if (option->enabled)
- option->cb();
- }
-}
-
-void
-rte_option_usage(void)
-{
- struct rte_option *option;
- int opt_count = 0;
-
- TAILQ_FOREACH(option, &rte_option_list, next)
- opt_count += 1;
- if (opt_count == 0)
- return;
-
- printf("EAL dynamic options:\n");
- TAILQ_FOREACH(option, &rte_option_list, next)
- printf(" --%-*s %s\n", 17, option->name, option->usage);
- printf("\n");
-}
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += malloc_heap.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += malloc_mp.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_keepalive.c
-SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_option.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_service.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_random.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_reciprocal.c
#include <rte_devargs.h>
#include <rte_version.h>
#include <rte_vfio.h>
-#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
#include <rte_telemetry.h>
argvopt = argv;
optind = 1;
optreset = 1;
- opterr = 0;
while ((opt = getopt_long(argc, argvopt, eal_short_options,
eal_long_options, &option_index)) != EOF) {
- /*
- * getopt didn't recognise the option, lets parse the
- * registered options to see if the flag is valid
- */
+ /* getopt didn't recognise the option */
if (opt == '?') {
- ret = rte_option_parse(argv[optind-1]);
- if (ret == 0)
- continue;
-
eal_usage(prgname);
ret = -1;
goto out;
eal_mcfg_complete();
- /* Call each registered callback, if enabled */
- rte_option_init();
-
return fctret;
}
'rte_malloc.h',
'rte_memory.h',
'rte_memzone.h',
- 'rte_option.h',
'rte_pci_dev_feature_defs.h',
'rte_pci_dev_features.h',
'rte_per_lcore.h',
+++ /dev/null
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018 Intel Corporation.
- */
-
-#ifndef __INCLUDE_RTE_OPTION_H__
-#define __INCLUDE_RTE_OPTION_H__
-
-/**
- * @file
- *
- * This API offers the ability to register options to the EAL command line and
- * map those options to functions that will be executed at the end of EAL
- * initialization. These options will be available as part of the EAL command
- * line of applications and are dynamically managed.
- *
- * This is used primarily by DPDK libraries offering command line options.
- * Currently, this API is limited to registering options without argument.
- *
- * The register API can be used to resolve circular dependency issues
- * between EAL and the library. The library uses EAL, but is also initialized
- * by EAL. Hence, EAL depends on the init function of the library. The API
- * introduced in rte_option allows us to register the library init with EAL
- * (passing a function pointer) and avoid the circular dependency.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef int (*rte_option_cb)(void);
-
-/**
- * Structure describing an EAL command line option dynamically registered.
- *
- * Common EAL options are mostly statically defined.
- * Some libraries need additional options to be dynamically added.
- * This structure describes such options.
- */
-struct rte_option {
- TAILQ_ENTRY(rte_option) next; /**< Next entry in the list. */
- const char *name; /**< The option name. */
- const char *usage; /**< Option summary string. */
- rte_option_cb cb; /**< Function called when option is used. */
- int enabled; /**< Set when the option is used. */
-};
-
-/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
- * Register an option to the EAL command line.
- * When recognized, the associated function will be executed at the end of EAL
- * initialization.
- *
- * The associated structure must be available the whole time this option is
- * registered (i.e. not stack memory).
- *
- * @param opt
- * Structure describing the option to parse.
- *
- * @return
- * 0 on success, <0 otherwise.
- */
-__rte_experimental
-int
-rte_option_register(struct rte_option *opt);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += malloc_heap.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += malloc_mp.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_keepalive.c
-SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_option.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_service.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_random.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_reciprocal.c
#include <rte_atomic.h>
#include <malloc_heap.h>
#include <rte_vfio.h>
-#include <rte_option.h>
#include <rte_telemetry.h>
#include "eal_private.h"
argvopt = argv;
optind = 1;
- opterr = 0;
while ((opt = getopt_long(argc, argvopt, eal_short_options,
eal_long_options, &option_index)) != EOF) {
- /*
- * getopt didn't recognise the option, lets parse the
- * registered options to see if the flag is valid
- */
+ /* getopt didn't recognise the option */
if (opt == '?') {
- ret = rte_option_parse(argv[optind-1]);
- if (ret == 0)
- continue;
-
eal_usage(prgname);
ret = -1;
goto out;
eal_mcfg_complete();
- /* Call each registered callback, if enabled */
- rte_option_init();
-
return fctret;
}
rte_memseg_get_fd_offset;
rte_memseg_get_fd_offset_thread_unsafe;
rte_memseg_get_fd_thread_unsafe;
- rte_option_register;
# added in 19.02
rte_extmem_attach;