log: move processing_msg to global data

Replace the static variable processing_msg by a field in the global data.
Make the field bool at it can only be true or false.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heinrich Schuchardt 2020-10-17 14:31:57 +02:00 committed by Tom Rini
parent 986c980c82
commit 993a06b614
2 changed files with 11 additions and 4 deletions

View file

@ -199,24 +199,23 @@ static bool log_passes_filters(struct log_device *ldev, struct log_rec *rec)
static int log_dispatch(struct log_rec *rec) static int log_dispatch(struct log_rec *rec)
{ {
struct log_device *ldev; struct log_device *ldev;
static int processing_msg;
/* /*
* When a log driver writes messages (e.g. via the network stack) this * When a log driver writes messages (e.g. via the network stack) this
* may result in further generated messages. We cannot process them here * may result in further generated messages. We cannot process them here
* as this might result in infinite recursion. * as this might result in infinite recursion.
*/ */
if (processing_msg) if (gd->processing_msg)
return 0; return 0;
/* Emit message */ /* Emit message */
processing_msg = 1; gd->processing_msg = true;
list_for_each_entry(ldev, &gd->log_head, sibling_node) { list_for_each_entry(ldev, &gd->log_head, sibling_node) {
if ((ldev->flags & LOGDF_ENABLE) && if ((ldev->flags & LOGDF_ENABLE) &&
log_passes_filters(ldev, rec)) log_passes_filters(ldev, rec))
ldev->drv->emit(ldev, rec); ldev->drv->emit(ldev, rec);
} }
processing_msg = 0; gd->processing_msg = false;
return 0; return 0;
} }

View file

@ -363,6 +363,14 @@ struct global_data {
* &enum log_fmt defines the bits of the bit mask. * &enum log_fmt defines the bits of the bit mask.
*/ */
int log_fmt; int log_fmt;
/**
* @processing_msg: a log message is being processed
*
* This flag is used to suppress the creation of additional messages
* while another message is being processed.
*/
bool processing_msg;
#endif #endif
#if CONFIG_IS_ENABLED(BLOBLIST) #if CONFIG_IS_ENABLED(BLOBLIST)
/** /**