summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2017-12-28 13:14:23 -0700
committerSimon Glass <sjg@chromium.org>2018-02-03 10:09:27 -0700
commit3707c6ee0d1f939130a62c945b56045d9a83fafc (patch)
tree86b7c70cf64113d77001fed0b2a57396aa3439a2 /doc
parent8cb7c04248c9f0c3b79325b82844d79a680ef2eb (diff)
log: Add a way to log error-return values
When functions return an error it propagates up the stack to the point where it is reported. Often the error code provides enough information about the root cause of the error that this is obvious what went wrong. However in some cases the error may be hard to trace. For example if a driver uses several devices to perform an operation, it may not be obvious which one failed. Add a log_ret() macro to help with this. This can be used to wrap any error-return value. The logging system will then output a log record when the original error is generated, making it easy to trace the call stack of the error. This macro can significantly impact code size, so its use is controlled by a Kconfig option, which is enabled for sandbox. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'doc')
-rw-r--r--doc/README.log8
1 files changed, 8 insertions, 0 deletions
diff --git a/doc/README.log b/doc/README.log
index 54d9a8e1b9..2abaee0c10 100644
--- a/doc/README.log
+++ b/doc/README.log
@@ -148,6 +148,14 @@ Also debug() and error() will generate log records - these use LOG_CATEGORY
as the category, so you should #define this right at the top of the source
file to ensure the category is correct.
+You can also define CONFIG_LOG_ERROR_RETURN to enable the log_ret() macro. This
+can be used whenever your function returns an error value:
+
+ return log_ret(uclass_first_device(UCLASS_MMC, &dev));
+
+This will write a log record when an error code is detected (a value < 0). This
+can make it easier to trace errors that are generated deep in the call stack.
+
Code size
---------