From: Heinrich Schuchardt Date: Sat, 17 Oct 2020 12:31:57 +0000 (+0200) Subject: log: move processing_msg to global data X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=993a06b6144d54ae2ad83cc25c18acb9d1720ad0;p=u-boot.git 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 Reviewed-by: Simon Glass --- 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) /**