1 /* 2 * Copyright (c) 2020 Tobias Svehagen 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_POSIX_SYS_EVENTFD_H_ 8 #define ZEPHYR_INCLUDE_POSIX_SYS_EVENTFD_H_ 9 10 #include <zephyr/zvfs/eventfd.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #define EFD_SEMAPHORE ZVFS_EFD_SEMAPHORE 17 #define EFD_NONBLOCK ZVFS_EFD_NONBLOCK 18 19 typedef zvfs_eventfd_t eventfd_t; 20 21 /** 22 * @brief Create a file descriptor for event notification 23 * 24 * The returned file descriptor can be used with POSIX read/write calls or 25 * with the eventfd_read/eventfd_write functions. 26 * 27 * It also supports polling and by including an eventfd in a call to poll, 28 * it is possible to signal and wake the polling thread by simply writing to 29 * the eventfd. 30 * 31 * When using read() and write() on an eventfd, the size must always be at 32 * least 8 bytes or the operation will fail with EINVAL. 33 * 34 * @return New eventfd file descriptor on success, -1 on error 35 */ 36 int eventfd(unsigned int initval, int flags); 37 38 /** 39 * @brief Read from an eventfd 40 * 41 * If call is successful, the value parameter will have the value 1 42 * 43 * @param fd File descriptor 44 * @param value Pointer for storing the read value 45 * 46 * @return 0 on success, -1 on error 47 */ 48 int eventfd_read(int fd, eventfd_t *value); 49 50 /** 51 * @brief Write to an eventfd 52 * 53 * @param fd File descriptor 54 * @param value Value to write 55 * 56 * @return 0 on success, -1 on error 57 */ 58 int eventfd_write(int fd, eventfd_t value); 59 60 #ifdef __cplusplus 61 } 62 #endif 63 64 #endif /* ZEPHYR_INCLUDE_POSIX_SYS_EVENTFD_H_ */ 65