Thread (98 messages) 98 messages, 8 authors, 2020-07-06

Re: [dpdk-dev] [PATCH 01/13] eal/log: introduce log register macro

From: Jerin Jacob <hidden>
Date: 2020-06-26 12:06:52

On Fri, Jun 26, 2020 at 5:13 PM David Marchand
[off-list ref] wrote:
On Fri, Jun 26, 2020 at 1:16 PM Jerin Jacob [off-list ref] wrote:
quoted
quoted
quoted
Alternative is to keep variable declaration outside,
as David suggested, and I tend to agree that it is a
bit better. Macro name says 'register'. It is not
'declare and register'. Also it avoids static-vs-extern
problem completely. The solution allows to keep the
variable declaration untouched and put constructor (macro)
at the end of fine where constructors typically reside.
My only concern with that approach is that, We can not save a lot of
code duplication
with that scheme. ie. it is [1] vs [2]. We can change the MACRO name
accordingly if that is a concern. Any suggestions?

Let me know your preference on [1] vs [2], I will stick with for the
next version.
If there are no other comments, I change RTE_LOG_REGISTER to static version
and RTE_LOG_REGISTER_EXTERN for a non-static version and send the next version.
- Having a macro that does more than what its name tells is inconvenient.
I agree. What could be that name if we want to declare and register?
RTE_LOG_DECLARE_AND_REGISTER_EXTERN?
The trace framework differentiates declaration and registration.
Why merge things in the log framework?
Not merging both at the functional level. it has just helper macro to
avoid duplicating the code usage pattern.
Saving one line is not worth it.
It is one line per log registration.

Please check the patch change status, at
,http://mails.dpdk.org/archives/dev/2020-June/170531.html
It is:
 122 files changed, 229 insertions(+), 1322 deletions(-)

Why to add yet another 229 lines, if we can change the name.

- Having components set log levels at init time in the macro is a bug to me.
This has been worked around with
rte_log_register/rte_log_register_and_pick_level but the initial
problem is that rte_log_set_level* should only be called by the user.
I agree with the below stuff, That's is not introduced by this patch.
It is already there.
Be it macro or no macro code.

I think this patch helps to change to new scheme as it takes care of
changing the
registration part to commonplace so that we can set to the same level
in the future if
everyone agrees to it

There should be a default level for all dpdk components (which means a
common interpretation of each level), then the user chooses which logs
he wants to see.

At the moment, let's say I am looking at a live system, by default, we have:

id 0: lib.eal, level is info
id 1: lib.malloc, level is info
id 2: lib.ring, level is info
id 3: lib.mempool, level is info
id 4: lib.timer, level is info
id 5: pmd, level is info
...
id 32: lib.bbdev, level is notice
id 33: lib.bpf, level is info
id 34: bus.dpaa, level is notice
id 35: bus.fslmc, level is notice
id 36: bus.ifpga, level is notice
id 37: bus.vdev, level is notice
id 38: bus.vmbus, level is notice
id 39: lib.cfgfile, level is info
id 40: pmd.common.dpaax, level is error
...

I enable the logs for a component, set it to debug, I get my logs.
If now I want to reset the logs to the initial state, err... well
unless I took note of it, I don't know what the default level is.
But I should not have to care.

Restarting dpdk sure is something you can do with testpmd but not with
real systems.


--
David Marchand
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help