]> git.baikalelectronics.ru Git - uboot.git/commit
time: Update mdelay() to delay in one large chunk
authorSimon Glass <sjg@chromium.org>
Sat, 24 Nov 2018 04:29:40 +0000 (21:29 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 5 Dec 2018 13:01:35 +0000 (06:01 -0700)
commitb2332683e7f8dcb937ac7bacbf22909d8b6436e7
tree5be1fb86151ac64025c0ce6f2dd9dedfd7a8546f
parentf1ebb9d436618fca6a4c586b121826de6b76ed14
time: Update mdelay() to delay in one large chunk

The current function delays in one millisecond at a time. This does not
work well on sandbox since it results in lots of calls to usleep(1000) in
a tight loop. This makes the sleep duration quite variable since each call
results in a sleep of *at least* 1000us, but possibly more. Depending on
how busy the machine is, the sleep time can change quite a bit.

We cannot fix this in general, but we can reduce the effect by doing a
single sleep. The multiplication works fine with an unsigned long argument
up until a sleep time of about 4m milliseconds. This is over an hour and
we can be sure that delays of that length are not useful.

Update the mdelay() function to call udelay() only once with the
calculated delay value.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/linux/delay.h