diff options
author | Vic (Chun-Ju) Yang <victoryang@chromium.org> | 2014-01-21 10:53:51 +0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-01-21 16:15:20 +0000 |
commit | a02d7fa1480380ef402118395870d742b3910fd9 (patch) | |
tree | 3e9761f26abbca0d5c196eeb11fe36b5cded3e03 | |
parent | 8d3136f6b76c2749a725e22a55ba94bfdff31037 (diff) | |
download | chrome-ec-a02d7fa1480380ef402118395870d742b3910fd9.tar.gz |
emulator: Use udelay() for usleep() if task hasn't started
If the task scheduler hasn't started yet, use udelay() for any call to
usleep(). This is what we do for real core now.
BUG=chrome-os-partner:19235
TEST=Call usleep() in init hook
BRANCH=None
Change-Id: Ia5d14ee165ab25bfa231497af1aa8c87fbc324f0
Signed-off-by: Vic (Chun-Ju) Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/183271
Reviewed-by: Yung-chieh Lo <yjlou@chromium.org>
-rw-r--r-- | core/host/timer.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/core/host/timer.c b/core/host/timer.c index dd8b88dbb4..ff17ddf068 100644 --- a/core/host/timer.c +++ b/core/host/timer.c @@ -28,8 +28,14 @@ static int time_set; void usleep(unsigned us) { + if (!task_start_called()) { + udelay(us); + return; + } + ASSERT(!in_interrupt_context() && task_get_current() != TASK_ID_INT_GEN); + task_wait_event(us); } |