env/dpdk: allow changing DPDK loglevels
spdk_env_opts->env_context may now contain a DPDK-specific string that will be appended directly into rte_eal_init(). It can be used to e.g. override the default EAL loglevel, which was hardcoded to RTE_LOG_NOTICE so far. This is primarily meant to be used during development. As a test for this feature, the vtophys test app will now set the highest possible EAL loglevel which will give us a ton of additional debug logs. Note: the opts->env_context field is implementation-specific and hence the vtophys app needs to check if it's run with our env_dpdk. As SPDK_CONFIG_ENV is a raw text not even surrounded with quotation marks, the vtophys app needs to do a bit of #define magic to make it a string. Change-Id: I0b2196770e5b59a6c33d0170337c34f9f8b8466e Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/445111 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
9858408b55
commit
b42cf6eaff
@ -302,6 +302,21 @@ spdk_build_eal_cmdline(const struct spdk_env_opts *opts)
|
||||
}
|
||||
}
|
||||
|
||||
/* Lower default EAL loglevel to RTE_LOG_NOTICE - normal, but significant messages.
|
||||
* This can be overridden by specifying the same option in opts->env_context
|
||||
*/
|
||||
args = spdk_push_arg(args, &argcount, strdup("--log-level=lib.eal:6"));
|
||||
if (args == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (opts->env_context) {
|
||||
args = spdk_push_arg(args, &argcount, strdup(opts->env_context));
|
||||
if (args == NULL) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
/* Set the base virtual address - it must be an address that is not in the
|
||||
* ASAN shadow region, otherwise ASAN-enabled builds will ignore the
|
||||
@ -416,8 +431,5 @@ spdk_env_init(const struct spdk_env_opts *opts)
|
||||
spdk_env_unlink_shared_files();
|
||||
}
|
||||
|
||||
/* Print only the significant EAL messages */
|
||||
rte_log_set_level(RTE_LOGTYPE_EAL, RTE_LOG_NOTICE);
|
||||
|
||||
return spdk_env_dpdk_post_init();
|
||||
}
|
||||
|
9
test/env/vtophys/vtophys.c
vendored
9
test/env/vtophys/vtophys.c
vendored
@ -33,11 +33,16 @@
|
||||
|
||||
#include "spdk/stdinc.h"
|
||||
|
||||
#include "spdk/config.h"
|
||||
#include "spdk/env.h"
|
||||
#include "spdk/util.h"
|
||||
|
||||
#include "CUnit/Basic.h"
|
||||
|
||||
#define __SPDK_ENV_NAME(path) (strrchr(#path, '/') + 1)
|
||||
#define _SPDK_ENV_NAME(path) __SPDK_ENV_NAME(path)
|
||||
#define SPDK_ENV_NAME _SPDK_ENV_NAME(SPDK_CONFIG_ENV)
|
||||
|
||||
static void
|
||||
vtophys_malloc_test(void)
|
||||
{
|
||||
@ -156,6 +161,10 @@ main(int argc, char **argv)
|
||||
spdk_env_opts_init(&opts);
|
||||
opts.name = "vtophys";
|
||||
opts.core_mask = "0x1";
|
||||
if (strcmp(SPDK_ENV_NAME, "env_dpdk") == 0) {
|
||||
opts.env_context = "--log-level=lib.eal:8";
|
||||
}
|
||||
|
||||
if (spdk_env_init(&opts) < 0) {
|
||||
printf("Err: Unable to initialize SPDK env\n");
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user