diff options
Diffstat (limited to 'include/osmocom/core/select.h')
-rw-r--r-- | include/osmocom/core/select.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/include/osmocom/core/select.h b/include/osmocom/core/select.h index 476c564e..b1b82672 100644 --- a/include/osmocom/core/select.h +++ b/include/osmocom/core/select.h @@ -3,20 +3,48 @@ #include <osmocom/core/linuxlist.h> +/*! \file select.h + * \brief select loop abstraction + */ + +/*! \brief Indicate interest in reading from the file descriptor */ #define BSC_FD_READ 0x0001 +/*! \brief Indicate interest in writing to the file descriptor */ #define BSC_FD_WRITE 0x0002 +/*! \brief Indicate interest in exceptions from the file descriptor */ #define BSC_FD_EXCEPT 0x0004 +/*! \brief Structure representing a file dsecriptor */ struct osmo_fd { - struct llist_head list; + /*! linked list for internal management */ + struct llist_head list; + /*! actual operating-system level file decriptor */ int fd; + /*! bit-mask or of \ref BSC_FD_READ, \ref BSC_FD_WRITE and/or + * \ref BSC_FD_EXCEPT */ unsigned int when; + /*! call-back function to be called once file descriptor becomes + * available */ int (*cb)(struct osmo_fd *fd, unsigned int what); + /*! data pointer passed through to call-back function */ void *data; + /*! private number, extending \a data */ unsigned int priv_nr; }; +/*! \brief Register a new file descriptor with select loop abstraction + * \param[in] fd osmocom file descriptor to be registered + */ int osmo_fd_register(struct osmo_fd *fd); + +/*! \brief Unregister a file descriptor from select loop abstraction + * \param[in] fd osmocom file descriptor to be unregistered + */ void osmo_fd_unregister(struct osmo_fd *fd); + +/*! \brief select main loop integration + * \param[in] polling should we pollonly (1) or block on select (0) + */ int osmo_select_main(int polling); + #endif /* _BSC_SELECT_H */ |