diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2020-10-17 14:31:57 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-10-27 13:50:53 -0400 |
commit | 993a06b6144d54ae2ad83cc25c18acb9d1720ad0 (patch) | |
tree | e62aa87d0f033449d3d182edb4ad328c4c1a847a | |
parent | 986c980c8250849d9394fdf377a3de75edb11888 (diff) | |
download | u-boot-993a06b6144d54ae2ad83cc25c18acb9d1720ad0.tar.gz |
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>
-rw-r--r-- | common/log.c | 7 | ||||
-rw-r--r-- | include/asm-generic/global_data.h | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/common/log.c b/common/log.c index b7a6ebe298..6a59f2ebe5 100644 --- a/common/log.c +++ b/common/log.c @@ -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) { struct log_device *ldev; - static int processing_msg; /* * When a log driver writes messages (e.g. via the network stack) this * may result in further generated messages. We cannot process them here * as this might result in infinite recursion. */ - if (processing_msg) + if (gd->processing_msg) return 0; /* Emit message */ - processing_msg = 1; + gd->processing_msg = true; list_for_each_entry(ldev, &gd->log_head, sibling_node) { if ((ldev->flags & LOGDF_ENABLE) && log_passes_filters(ldev, rec)) ldev->drv->emit(ldev, rec); } - processing_msg = 0; + gd->processing_msg = false; return 0; } diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index ebb740d34f..db83f59ceb 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -363,6 +363,14 @@ struct global_data { * &enum log_fmt defines the bits of the bit mask. */ 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 #if CONFIG_IS_ENABLED(BLOBLIST) /** |