summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2012-09-28 08:56:36 (GMT)
committerAnatolij Gustschin <agust@denx.de>2012-10-02 20:39:33 (GMT)
commit0e9967735869a4e2bbc92d5d0eea0e2136180d49 (patch)
treed5a702bad60fa293a9fe6275b75bed8147979263 /include
parent094e06a523ba040f81857609f9d889b4b57ee151 (diff)
downloadu-boot-fsl-qoriq-0e9967735869a4e2bbc92d5d0eea0e2136180d49.tar.xz
bootstage: Add time accumulation feature
Sometimes we want to add up the amount of time spent in a particular activity when it is happening in a number of discrete chunks. Add bootstage_start() to mark the start of an acitivity and bootstage_accum() to accumulate the time since the last start. Calling these function in pairs results in the accumulated time being collected. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/bootstage.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/bootstage.h b/include/bootstage.h
index 64b2ec6..127c94f 100644
--- a/include/bootstage.h
+++ b/include/bootstage.h
@@ -247,6 +247,33 @@ ulong bootstage_error(enum bootstage_id id);
ulong bootstage_mark_name(enum bootstage_id id, const char *name);
+/**
+ * Mark the start of a bootstage activity. The end will be marked later with
+ * bootstage_accum() and at that point we accumulate the time taken. Calling
+ * this function turns the given id into a accumulator rather than and
+ * absolute mark in time. Accumulators record the total amount of time spent
+ * in an activty during boot.
+ *
+ * @param id Bootstage id to record this timestamp against
+ * @param name Textual name to display for this id in the report (maybe NULL)
+ * @return start timestamp in microseconds
+ */
+uint32_t bootstage_start(enum bootstage_id id, const char *name);
+
+/**
+ * Mark the end of a bootstage activity
+ *
+ * After previously marking the start of an activity with bootstage_start(),
+ * call this function to mark the end. You can call these functions in pairs
+ * as many times as you like.
+ *
+ * @param id Bootstage id to record this timestamp against
+ * @return time spent in this iteration of the activity (i.e. the time now
+ * less the start time recorded in the last bootstage_start() call
+ * with this id.
+ */
+uint32_t bootstage_accum(enum bootstage_id id);
+
/* Print a report about boot time */
void bootstage_report(void);