summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/bootstage.c16
-rw-r--r--include/bootstage.h17
2 files changed, 23 insertions, 10 deletions
diff --git a/common/bootstage.c b/common/bootstage.c
index 4e01d92..3275499 100644
--- a/common/bootstage.c
+++ b/common/bootstage.c
@@ -33,13 +33,9 @@
DECLARE_GLOBAL_DATA_PTR;
-enum bootstage_flags {
- BOOTSTAGEF_ERROR = 1 << 0, /* Error record */
- BOOTSTAGEF_ALLOC = 1 << 1, /* Allocate an id */
-};
-
struct bootstage_record {
ulong time_us;
+ uint32_t start_us;
const char *name;
int flags; /* see enum bootstage_flags */
enum bootstage_id id;
@@ -49,10 +45,9 @@ static struct bootstage_record record[BOOTSTAGE_ID_COUNT] = { {1} };
static int next_id = BOOTSTAGE_ID_USER;
ulong bootstage_add_record(enum bootstage_id id, const char *name,
- int flags)
+ int flags, ulong mark)
{
struct bootstage_record *rec;
- ulong mark = timer_get_boot_us();
if (flags & BOOTSTAGEF_ALLOC)
id = next_id++;
@@ -77,12 +72,13 @@ ulong bootstage_add_record(enum bootstage_id id, const char *name,
ulong bootstage_mark(enum bootstage_id id)
{
- return bootstage_add_record(id, NULL, 0);
+ return bootstage_add_record(id, NULL, 0, timer_get_boot_us());
}
ulong bootstage_error(enum bootstage_id id)
{
- return bootstage_add_record(id, NULL, BOOTSTAGEF_ERROR);
+ return bootstage_add_record(id, NULL, BOOTSTAGEF_ERROR,
+ timer_get_boot_us());
}
ulong bootstage_mark_name(enum bootstage_id id, const char *name)
@@ -91,7 +87,7 @@ ulong bootstage_mark_name(enum bootstage_id id, const char *name)
if (id == BOOTSTAGE_ID_ALLOC)
flags = BOOTSTAGEF_ALLOC;
- return bootstage_add_record(id, name, flags);
+ return bootstage_add_record(id, name, flags, timer_get_boot_us());
}
static void print_time(unsigned long us_time)
diff --git a/include/bootstage.h b/include/bootstage.h
index a000538..64b2ec6 100644
--- a/include/bootstage.h
+++ b/include/bootstage.h
@@ -31,6 +31,12 @@
#define CONFIG_BOOTSTAGE_USER_COUNT 20
#endif
+/* Flags for each bootstage record */
+enum bootstage_flags {
+ BOOTSTAGEF_ERROR = 1 << 0, /* Error record */
+ BOOTSTAGEF_ALLOC = 1 << 1, /* Allocate an id */
+};
+
/*
* A list of boot stages that we know about. Each of these indicates the
* state that we are at, and the action that we are about to perform. For
@@ -221,6 +227,17 @@ void show_boot_progress(int val);
#ifdef CONFIG_BOOTSTAGE
/* This is the full bootstage implementation */
+/**
+ * Add a new bootstage record
+ *
+ * @param id Bootstage ID to use (ignored if flags & BOOTSTAGEF_ALLOC)
+ * @param name Name of record, or NULL for none
+ * @param flags Flags (BOOTSTAGEF_...)
+ * @param mark Time to record in this record, in microseconds
+ */
+ulong bootstage_add_record(enum bootstage_id id, const char *name,
+ int flags, ulong mark);
+
/*
* Mark a time stamp for the current boot stage.
*/