add osmo_fd_setup() convenience function to fill-in osmo_fd

This basically follows the concept of osmo_timer_setup() and allows
the caller to fill-in all configurable fields of osmo_fd in one
line of code, rather than open-coding it in 5 lines everywhere.

Change-Id: I6dbf19ea22fd65302bfc5424c10418d1b7939094
This commit is contained in:
Harald Welte 2017-08-12 11:43:14 +02:00
parent 4a29f34813
commit 6c0a0e645d
2 changed files with 22 additions and 0 deletions

View File

@ -36,6 +36,10 @@ struct osmo_fd {
unsigned int priv_nr;
};
void osmo_fd_setup(struct osmo_fd *ofd, int fd, unsigned int when,
int (*cb)(struct osmo_fd *fd, unsigned int what),
void *data, unsigned int priv_nr);
bool osmo_fd_is_registered(struct osmo_fd *fd);
int osmo_fd_register(struct osmo_fd *fd);
void osmo_fd_unregister(struct osmo_fd *fd);

View File

@ -47,6 +47,24 @@ static int maxfd = 0;
static LLIST_HEAD(osmo_fds);
static int unregistered_count;
/*! Set up an osmo-fd. Will not register it.
* \param[inout] ofd Osmo FD to be set-up
* \param[in] fd OS-level file descriptor number
* \param[in] when bit-mask of BSC_FD_{READ,WRITE,EXECEPT}
* \param[in] cb Call-back function to be called
* \param[in] data Private context pointer
* \param[in] priv_nr Private number
*/
void osmo_fd_setup(struct osmo_fd *ofd, int fd, unsigned int when,
int (*cb)(struct osmo_fd *fd, unsigned int what),
void *data, unsigned int priv_nr)
{
ofd->fd = fd;
ofd->when = when;
ofd->cb = cb;
ofd->data = data;
ofd->priv_nr = priv_nr;
}
/*! Check if a file descriptor is already registered
* \param[in] fd osmocom file descriptor to be checked