| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <errno.h> |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/posix/unistd.h> |
| |
| /** |
| * @brief Sleep for a specified number of seconds. |
| * |
| * See IEEE 1003.1 |
| */ |
| unsigned sleep(unsigned int seconds) |
| { |
| int rem; |
| |
| rem = k_sleep(K_SECONDS(seconds)); |
| __ASSERT_NO_MSG(rem >= 0); |
| |
| return rem / MSEC_PER_SEC; |
| } |
| /** |
| * @brief Suspend execution for microsecond intervals. |
| * |
| * See IEEE 1003.1 |
| */ |
| int usleep(useconds_t useconds) |
| { |
| int32_t rem; |
| |
| if (useconds >= USEC_PER_SEC) { |
| errno = EINVAL; |
| return -1; |
| } |
| |
| rem = k_usleep(useconds); |
| __ASSERT_NO_MSG(rem >= 0); |
| if (rem > 0) { |
| /* sleep was interrupted by a call to k_wakeup() */ |
| errno = EINTR; |
| return -1; |
| } |
| |
| return 0; |
| } |