By default, trace output will created at ``home`` directory and parameter
must be specified once only.
+* ``--trace-bufsz=<val>``
+
+ Specify maximum size of allocated memory for trace output for each thread.
+ Valid unit can be either ``B`` or ``K`` or ``M`` for ``Bytes``, ``KBytes``
+ and ``MBytes`` respectively. For example:
+
+ Configuring ``2MB`` as a maximum size for trace output file::
+
+ --trace-bufsz=2M
+
+ By default, size of trace output file is ``1MB`` and parameter
+ must be specified once only.
+
Other options
~~~~~~~~~~~~~
{OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM },
{OPT_TRACE, 1, NULL, OPT_TRACE_NUM },
{OPT_TRACE_DIR, 1, NULL, OPT_TRACE_DIR_NUM },
+ {OPT_TRACE_BUF_SIZE, 1, NULL, OPT_TRACE_BUF_SIZE_NUM },
{OPT_MASTER_LCORE, 1, NULL, OPT_MASTER_LCORE_NUM },
{OPT_MBUF_POOL_OPS_NAME, 1, NULL, OPT_MBUF_POOL_OPS_NAME_NUM},
{OPT_NO_HPET, 0, NULL, OPT_NO_HPET_NUM },
break;
}
+ case OPT_TRACE_BUF_SIZE_NUM: {
+ if (eal_trace_bufsz_args_save(optarg) < 0) {
+ RTE_LOG(ERR, EAL, "invalid parameters for --"
+ OPT_TRACE_BUF_SIZE "\n");
+ return -1;
+ }
+ break;
+ }
+
case OPT_LCORES_NUM:
if (eal_parse_lcores(optarg) < 0) {
RTE_LOG(ERR, EAL, "invalid parameter for --"
" By default, trace output will created at\n"
" $HOME directory and parameter must be\n"
" specified once only.\n"
+ " --"OPT_TRACE_BUF_SIZE"=<int>\n"
+ " Specify maximum size of allocated memory\n"
+ " for trace output for each thread. Valid\n"
+ " unit can be either 'B|K|M' for 'Bytes',\n"
+ " 'KBytes' and 'MBytes' respectively.\n"
+ " Default is 1MB and parameter must be\n"
+ " specified once only.\n"
" -v Display version information on startup\n"
" -h, --help This help\n"
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
return 0;
}
+int
+eal_trace_bufsz_args_save(char const *optarg)
+{
+ struct trace *trace = trace_obj_get();
+ uint64_t bufsz;
+
+ if (optarg == NULL) {
+ trace_err("no optarg is passed");
+ return -EINVAL;
+ }
+
+ bufsz = rte_str_to_size(optarg);
+ if (bufsz == 0) {
+ trace_err("buffer size cannot be zero");
+ return -EINVAL;
+ }
+
+ trace->buff_len = bufsz;
+ return 0;
+}
+
+void
+trace_bufsz_args_apply(void)
+{
+ struct trace *trace = trace_obj_get();
+
+ if (trace->buff_len == 0)
+ trace->buff_len = 1024 * 1024; /* 1MB */
+}
+
int
eal_trace_dir_args_save(char const *optarg)
{
const char *trace_mode_to_string(enum rte_trace_mode mode);
const char *trace_area_to_string(enum trace_area_e area);
int trace_args_apply(const char *arg);
+void trace_bufsz_args_apply(void);
bool trace_has_duplicate_entry(void);
void trace_uuid_generate(void);
int trace_metadata_create(void);
int eal_trace_args_save(const char *optarg);
void eal_trace_args_free(void);
int eal_trace_dir_args_save(const char *optarg);
+int eal_trace_bufsz_args_save(const char *optarg);
#endif /* __EAL_TRACE_H */