libosmocore  1.5.1
Osmocom core library
select.c File Reference
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdbool.h>
#include <errno.h>
#include <osmocom/core/select.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/utils.h>
#include "../config.h"
#include <sys/select.h>
#include <poll.h>
#include <sys/timerfd.h>
#include <sys/signalfd.h>

Data Structures

struct  poll_state
 

Functions

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)
 Set up an osmo-fd. More...
 
void osmo_fd_update_when (struct osmo_fd *ofd, unsigned int when_mask, unsigned int when)
 Update the 'when' field of osmo_fd. More...
 
bool osmo_fd_is_registered (struct osmo_fd *fd)
 Check if a file descriptor is already registered. More...
 
int osmo_fd_register (struct osmo_fd *fd)
 Register a new file descriptor with select loop abstraction. More...
 
void osmo_fd_unregister (struct osmo_fd *fd)
 Unregister a file descriptor from select loop abstraction. More...
 
void osmo_fd_close (struct osmo_fd *fd)
 Close a file descriptor, mark it as closed + unregister from select loop abstraction. More...
 
int osmo_fd_fill_fds (void *_rset, void *_wset, void *_eset)
 Populate the fd_sets and return the highest fd number. More...
 
int osmo_fd_disp_fds (void *readset, void *writeset, void *exceptset)
 
static unsigned int poll_fill_fds (void)
 
static int poll_disp_fds (int n_fd)
 
static int _osmo_select_main (int polling)
 
int osmo_select_main (int polling)
 select main loop integration More...
 
int osmo_select_main_ctx (int polling)
 select main loop integration with temporary select-dispatch talloc context More...
 
struct osmo_fdosmo_fd_get_by_fd (int fd)
 find an osmo_fd based on the integer fd More...
 
void osmo_select_init (void)
 initialize the osmocom select abstraction for the current thread More...
 
static __attribute__ ((constructor))
 
int osmo_timerfd_disable (struct osmo_fd *ofd)
 disable the osmocom-wrapped timerfd More...
 
int osmo_timerfd_schedule (struct osmo_fd *ofd, const struct timespec *first, const struct timespec *interval)
 schedule the osmocom-wrapped timerfd to occur first at first, then periodically at interval More...
 
int osmo_timerfd_setup (struct osmo_fd *ofd, int(*cb)(struct osmo_fd *, unsigned int), void *data)
 setup osmocom-wrapped timerfd More...
 
static int signalfd_callback (struct osmo_fd *ofd, unsigned int what)
 
struct osmo_signalfdosmo_signalfd_setup (void *ctx, sigset_t set, osmo_signalfd_cb *cb, void *data)
 create a signalfd and register it with osmocom select loop. More...
 

Variables

static __thread int maxfd = 0
 
static __thread struct llist_head osmo_fds
 
static __thread int unregistered_count
 
static __thread struct poll_state g_poll
 

Detailed Description

select filedescriptor handling. Taken from: userspace logging daemon for the iptables ULOG target of the linux 2.4 netfilter subsystem.