libosmocore  0.10.2
Osmocom core library
select.h
Go to the documentation of this file.
1 
5 #pragma once
6 
8 #include <stdbool.h>
9 
15 #define BSC_FD_READ 0x0001
16 
17 #define BSC_FD_WRITE 0x0002
18 
19 #define BSC_FD_EXCEPT 0x0004
20 
22 struct osmo_fd {
24  struct llist_head list;
26  int fd;
29  unsigned int when;
32  int (*cb)(struct osmo_fd *fd, unsigned int what);
34  void *data;
36  unsigned int priv_nr;
37 };
38 
39 void osmo_fd_setup(struct osmo_fd *ofd, int fd, unsigned int when,
40  int (*cb)(struct osmo_fd *fd, unsigned int what),
41  void *data, unsigned int priv_nr);
42 
43 bool osmo_fd_is_registered(struct osmo_fd *fd);
44 int osmo_fd_register(struct osmo_fd *fd);
45 void osmo_fd_unregister(struct osmo_fd *fd);
46 void osmo_fd_close(struct osmo_fd *fd);
47 int osmo_select_main(int polling);
48 
49 struct osmo_fd *osmo_fd_get_by_fd(int fd);
50 
51 /*
52  * foreign event loop integration
53  */
54 int osmo_fd_fill_fds(void *readset, void *writeset, void *exceptset);
55 int osmo_fd_disp_fds(void *readset, void *writeset, void *exceptset);
56 
void * data
data pointer passed through to call-back function
Definition: select.h:34
int osmo_fd_fill_fds(void *readset, void *writeset, void *exceptset)
Populate the fd_sets and return the highest fd number.
Definition: select.c:162
int osmo_fd_register(struct osmo_fd *fd)
Register a new file descriptor with select loop abstraction.
Definition: select.c:89
void osmo_fd_unregister(struct osmo_fd *fd)
Unregister a file descriptor from select loop abstraction.
Definition: select.c:130
bool osmo_fd_is_registered(struct osmo_fd *fd)
Check if a file descriptor is already registered.
Definition: select.c:73
struct llist_head list
linked list for internal management
Definition: select.h:24
unsigned int priv_nr
private number, extending data
Definition: select.h:36
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.
Definition: select.c:58
struct osmo_fd * osmo_fd_get_by_fd(int fd)
find an osmo_fd based on the integer fd
Definition: select.c:259
int osmo_select_main(int polling)
select main loop integration
Definition: select.c:230
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)
Definition: select.c:185
Structure representing a file dsecriptor.
Definition: select.h:22
int(* cb)(struct osmo_fd *fd, unsigned int what)
call-back function to be called once file descriptor becomes available
Definition: select.h:32
unsigned int when
bit-mask or of BSC_FD_READ, BSC_FD_WRITE and/or BSC_FD_EXCEPT
Definition: select.h:29
int fd
actual operating-system level file decriptor
Definition: select.h:26
void osmo_fd_close(struct osmo_fd *fd)
Close a file descriptor, mark it as closed + unregister from select loop abstraction.
Definition: select.c:145