Sleep
NuttX provides three different types of sleep interfaces.
Common Sleep Interfaces
Scheduled Sleep Interfaces (tick-based)
Suspend the calling thread for a specified amount of time until the time expires or the thread is explicitly woken up through scheduler operations.
-
void nxsched_ticksleep(unsigned int ticks)
Suspends the calling thread from execution for the specified number of system ticks.
- Parameters:
ticks – The number of system ticks to sleep.
-
void nxsched_usleep(useconds_t usec)
Suspends the calling thread from execution for the specified number of microseconds.
- Parameters:
usec – The number of microseconds to sleep.
-
void nxsched_msleep(unsigned int msec)
Suspends the calling thread from execution for the specified number of milliseconds.
- Parameters:
msec – The number of milliseconds to sleep.
-
void nxsched_sleep(unsigned int sec)
Suspends the calling thread from execution for the specified number of seconds.
- Parameters:
sec – The number of seconds to sleep.
-
int nxsched_nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
Suspends the calling thread from execution for the specified rqtp argument. This function will return the remaining time via updating rmtp if the sleep is interrupted by a signal.
- Parameters:
rqtp – The amount of time to be suspended from execution.
rmtp – If the rmtp argument is non-NULL, the timespec structure referenced by it is updated to contain the amount of time remaining.
- Returns:
0 (OK), or negated errno if unsuccessful.
Signal-based Sleep Interfaces (timespec-based)
Suspend the calling thread for a specified amount of time until the time expires or a signal is delivered to the calling thread.
Note
Implementations are dependent on the signal framework and based on standard timespec conversion.
-
void nxsig_usleep(useconds_t usec)
Suspends the calling thread from execution for the specified number of microseconds.
- Parameters:
usec – The number of microseconds to sleep.
-
void nxsig_sleep(unsigned int sec)
Suspends the calling thread from execution for the specified number of seconds.
- Parameters:
sec – The number of seconds to sleep.
-
int nxsig_nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
Suspends the calling thread from execution for the specified rqtp argument. This function will return the remaining time via updating rmtp if the sleep is interrupted by a signal.
- Parameters:
rqtp – The amount of time to be suspended from execution.
rmtp – If the rmtp argument is non-NULL, the timespec structure referenced by it is updated to contain the amount of time remaining.
- Returns:
0 (OK), or negated errno if unsuccessful.
Busy Sleep Interfaces
Spin in a loop for the requested duration and never yield the CPU. The delay accuracy depends on
CONFIG_BOARD_LOOPSPERMSEC.
-
void up_mdelay(unsigned int milliseconds)
Delay inline for the requested number of milliseconds.
- Parameters:
milliseconds – The number of milliseconds to delay.
-
void up_udelay(useconds_t microseconds)
Delay inline for the requested number of microseconds.
- Parameters:
microseconds – The number of microseconds to delay.
-
void up_ndelay(unsigned long nanoseconds)
Delay inline for the requested number of nanoseconds.
- Parameters:
nanoseconds – The number of nanoseconds to delay.