libosmocore  1.0.1.85-9f28
Osmocom core library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
select.h
Go to the documentation of this file.
1 
5 #pragma once
6 
8 #include <stdbool.h>
9 #include <time.h>
10 
16 #define OSMO_FD_READ 0x0001
17 
18 #define OSMO_FD_WRITE 0x0002
19 
20 #define OSMO_FD_EXCEPT 0x0004
21 
22 /* legacy naming dating back to early OpenBSC / bsc_hack of 2008 */
23 #define BSC_FD_READ OSMO_FD_READ
24 #define BSC_FD_WRITE OSMO_FD_WRITE
25 #define BSC_FD_EXCEPT OSMO_FD_EXCEPT
26 
28 struct osmo_fd {
30  struct llist_head list;
32  int fd;
35  unsigned int when;
38  int (*cb)(struct osmo_fd *fd, unsigned int what);
40  void *data;
42  unsigned int priv_nr;
43 };
44 
45 void osmo_fd_setup(struct osmo_fd *ofd, int fd, unsigned int when,
46  int (*cb)(struct osmo_fd *fd, unsigned int what),
47  void *data, unsigned int priv_nr);
48 
49 bool osmo_fd_is_registered(struct osmo_fd *fd);
50 int osmo_fd_register(struct osmo_fd *fd);
51 void osmo_fd_unregister(struct osmo_fd *fd);
52 void osmo_fd_close(struct osmo_fd *fd);
53 int osmo_select_main(int polling);
54 
55 struct osmo_fd *osmo_fd_get_by_fd(int fd);
56 
57 /*
58  * foreign event loop integration
59  */
60 int osmo_fd_fill_fds(void *readset, void *writeset, void *exceptset);
61 int osmo_fd_disp_fds(void *readset, void *writeset, void *exceptset);
62 
63 /* timerfd integration */
64 int osmo_timerfd_disable(struct osmo_fd *ofd);
65 int osmo_timerfd_schedule(struct osmo_fd *ofd, const struct timespec *first,
66  const struct timespec *interval);
67 int osmo_timerfd_setup(struct osmo_fd *ofd, int (*cb)(struct osmo_fd *, unsigned int), void *data);
68 
void * data
data pointer passed through to call-back function
Definition: select.h:40
int osmo_timerfd_disable(struct osmo_fd *ofd)
int osmo_fd_register(struct osmo_fd *fd)
int osmo_timerfd_setup(struct osmo_fd *ofd, int(*cb)(struct osmo_fd *, unsigned int), void *data)
int(* cb)(struct osmo_fd *fd, unsigned int what)
call-back function to be called once file descriptor becomes available
Definition: select.h:38
void osmo_fd_unregister(struct osmo_fd *fd)
bool osmo_fd_is_registered(struct osmo_fd *fd)
struct llist_head list
linked list for internal management
Definition: select.h:30
int osmo_timerfd_schedule(struct osmo_fd *ofd, const struct timespec *first, const struct timespec *interval)
unsigned int priv_nr
private number, extending data
Definition: select.h:42
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)
int osmo_select_main(int polling)
uint8_t data[0]
Simple doubly linked list implementation.
(double) linked list header structure
Definition: linuxlist.h:46
int osmo_fd_disp_fds(void *readset, void *writeset, void *exceptset)
struct osmo_fd * osmo_fd_get_by_fd(int fd)
int osmo_fd_fill_fds(void *readset, void *writeset, void *exceptset)
Structure representing a file dsecriptor.
Definition: select.h:28
unsigned int when
bit-mask or of OSMO_FD_READ, OSMO_FD_WRITE and/or OSMO_FD_EXCEPT
Definition: select.h:35
int fd
actual operating-system level file decriptor
Definition: select.h:32
void osmo_fd_close(struct osmo_fd *fd)