projects
/
osmocom-bb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit '430be849945688ae107b079db1e216329b1a1f06'
[osmocom-bb.git]
/
src
/
shared
/
libosmocore
/
src
/
select.c
diff --git
a/src/shared/libosmocore/src/select.c
b/src/shared/libosmocore/src/select.c
index
adf3619
..
4b002ae
100644
(file)
--- a/
src/shared/libosmocore/src/select.c
+++ b/
src/shared/libosmocore/src/select.c
@@
-31,10
+31,10
@@
#ifdef HAVE_SYS_SELECT_H
static int maxfd = 0;
#ifdef HAVE_SYS_SELECT_H
static int maxfd = 0;
-static LLIST_HEAD(
bsc
_fds);
+static LLIST_HEAD(
osmo
_fds);
static int unregistered_count;
static int unregistered_count;
-int
bsc_register_fd(struct bsc
_fd *fd)
+int
osmo_fd_register(struct osmo
_fd *fd)
{
int flags;
{
int flags;
@@
-47,34
+47,43
@@
int bsc_register_fd(struct bsc_fd *fd)
if (flags < 0)
return flags;
if (flags < 0)
return flags;
+ /* set close-on-exec flag */
+ flags = fcntl(fd->fd, F_GETFD);
+ if (flags < 0)
+ return flags;
+ flags |= FD_CLOEXEC;
+ flags = fcntl(fd->fd, F_SETFD, flags);
+ if (flags < 0)
+ return flags;
+
/* Register FD */
if (fd->fd > maxfd)
maxfd = fd->fd;
#ifdef BSC_FD_CHECK
/* Register FD */
if (fd->fd > maxfd)
maxfd = fd->fd;
#ifdef BSC_FD_CHECK
- struct
bsc
_fd *entry;
- llist_for_each_entry(entry, &
bsc
_fds, list) {
+ struct
osmo
_fd *entry;
+ llist_for_each_entry(entry, &
osmo
_fds, list) {
if (entry == fd) {
if (entry == fd) {
- fprintf(stderr, "Adding a
bsc
_fd that is already in the list.\n");
+ fprintf(stderr, "Adding a
osmo
_fd that is already in the list.\n");
return 0;
}
}
#endif
return 0;
}
}
#endif
- llist_add_tail(&fd->list, &
bsc
_fds);
+ llist_add_tail(&fd->list, &
osmo
_fds);
return 0;
}
return 0;
}
-void
bsc_unregister_fd(struct bsc
_fd *fd)
+void
osmo_fd_unregister(struct osmo
_fd *fd)
{
unregistered_count++;
llist_del(&fd->list);
}
{
unregistered_count++;
llist_del(&fd->list);
}
-int
bsc
_select_main(int polling)
+int
osmo
_select_main(int polling)
{
{
- struct
bsc
_fd *ufd, *tmp;
+ struct
osmo
_fd *ufd, *tmp;
fd_set readset, writeset, exceptset;
int work = 0, rc;
struct timeval no_time = {0, 0};
fd_set readset, writeset, exceptset;
int work = 0, rc;
struct timeval no_time = {0, 0};
@@
-84,7
+93,7
@@
int bsc_select_main(int polling)
FD_ZERO(&exceptset);
/* prepare read and write fdsets */
FD_ZERO(&exceptset);
/* prepare read and write fdsets */
- llist_for_each_entry(ufd, &
bsc
_fds, list) {
+ llist_for_each_entry(ufd, &
osmo
_fds, list) {
if (ufd->when & BSC_FD_READ)
FD_SET(ufd->fd, &readset);
if (ufd->when & BSC_FD_READ)
FD_SET(ufd->fd, &readset);
@@
-95,21
+104,21
@@
int bsc_select_main(int polling)
FD_SET(ufd->fd, &exceptset);
}
FD_SET(ufd->fd, &exceptset);
}
-
bsc_timer
_check();
+
osmo_timers
_check();
if (!polling)
if (!polling)
-
bsc_prepare_timers
();
- rc = select(maxfd+1, &readset, &writeset, &exceptset, polling ? &no_time :
bsc_nearest_timer
());
+
osmo_timers_prepare
();
+ rc = select(maxfd+1, &readset, &writeset, &exceptset, polling ? &no_time :
osmo_timers_nearest
());
if (rc < 0)
return 0;
/* fire timers */
if (rc < 0)
return 0;
/* fire timers */
-
bsc_update_timers
();
+
osmo_timers_update
();
/* call registered callback functions */
restart:
unregistered_count = 0;
/* call registered callback functions */
restart:
unregistered_count = 0;
- llist_for_each_entry_safe(ufd, tmp, &
bsc
_fds, list) {
+ llist_for_each_entry_safe(ufd, tmp, &
osmo
_fds, list) {
int flags = 0;
if (FD_ISSET(ufd->fd, &readset)) {
int flags = 0;
if (FD_ISSET(ufd->fd, &readset)) {