diff --git a/src/rate_ctr.c b/src/rate_ctr.c
index a0e1814..6d771a4 100644
--- a/src/rate_ctr.c
+++ b/src/rate_ctr.c
@@ -82,7 +82,7 @@
 		ctr->intv[intv+1].rate += ctr->intv[intv].rate;
 }
 
-static struct timer_list rate_ctr_timer;
+static struct osmo_timer_list rate_ctr_timer;
 static uint64_t timer_ticks;
 
 /* The one-second interval has expired */
@@ -114,14 +114,14 @@
 	llist_for_each_entry(ctrg, &rate_ctr_groups, list)
 		rate_ctr_group_intv(ctrg);
 
-	bsc_schedule_timer(&rate_ctr_timer, 1, 0);
+	osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 }
 
 int rate_ctr_init(void *tall_ctx)
 {
 	tall_rate_ctr_ctx = tall_ctx;
 	rate_ctr_timer.cb = rate_ctr_timer_cb;
-	bsc_schedule_timer(&rate_ctr_timer, 1, 0);
+	osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 
 	return 0;
 }
diff --git a/src/select.c b/src/select.c
index adf3619..6c44f35 100644
--- a/src/select.c
+++ b/src/select.c
@@ -95,16 +95,16 @@
 			FD_SET(ufd->fd, &exceptset);
 	}
 
-	bsc_timer_check();
+	osmo_timers_check();
 
 	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 */
-	bsc_update_timers();
+	osmo_timers_update();
 
 	/* call registered callback functions */
 restart:
diff --git a/src/timer.c b/src/timer.c
index 9b2dd9e..ec75212 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -31,9 +31,9 @@
 #define TIME_SMALLER(left, right) \
         (left.tv_sec*MICRO_SECONDS+left.tv_usec) <= (right.tv_sec*MICRO_SECONDS+right.tv_usec)
 
-void bsc_add_timer(struct timer_list *timer)
+void osmo_timer_add(struct osmo_timer_list *timer)
 {
-	struct timer_list *list_timer;
+	struct osmo_timer_list *list_timer;
 
 	/* TODO: Optimize and remember the closest item... */
 	timer->active = 1;
@@ -47,7 +47,8 @@
 	llist_add(&timer->entry, &timer_list);
 }
 
-void bsc_schedule_timer(struct timer_list *timer, int seconds, int microseconds)
+void
+osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int microseconds)
 {
 	struct timeval current_time;
 
@@ -56,10 +57,10 @@
 	currentTime += seconds * MICRO_SECONDS + microseconds;
 	timer->timeout.tv_sec = currentTime / MICRO_SECONDS;
 	timer->timeout.tv_usec = currentTime % MICRO_SECONDS;
-	bsc_add_timer(timer);
+	osmo_timer_add(timer);
 }
 
-void bsc_del_timer(struct timer_list *timer)
+void osmo_timer_del(struct osmo_timer_list *timer)
 {
 	if (timer->in_list) {
 		timer->active = 0;
@@ -68,7 +69,7 @@
 	}
 }
 
-int bsc_timer_pending(struct timer_list *timer)
+int osmo_timer_pending(struct osmo_timer_list *timer)
 {
 	return timer->active;
 }
@@ -79,7 +80,7 @@
  * If the nearest timer timed out return NULL and then we will
  * dispatch everything after the select
  */
-struct timeval *bsc_nearest_timer()
+struct timeval *osmo_timers_nearest()
 {
 	struct timeval current_time;
 
@@ -106,9 +107,9 @@
 /*
  * Find the nearest time and update s_nearest_time
  */
-void bsc_prepare_timers()
+void osmo_timers_prepare()
 {
-	struct timer_list *timer, *nearest_timer = NULL;
+	struct osmo_timer_list *timer, *nearest_timer = NULL;
 	llist_for_each_entry(timer, &timer_list, entry) {
 		if (!nearest_timer || TIME_SMALLER(timer->timeout, nearest_timer->timeout)) {
 			nearest_timer = timer;
@@ -125,10 +126,10 @@
 /*
  * fire all timers... and remove them
  */
-int bsc_update_timers()
+int osmo_timers_update()
 {
 	struct timeval current_time;
-	struct timer_list *timer, *tmp;
+	struct osmo_timer_list *timer, *tmp;
 	int work = 0;
 
 	gettimeofday(&current_time, NULL);
@@ -166,16 +167,16 @@
 	llist_for_each_entry_safe(timer, tmp, &timer_list, entry) {
 		timer->handled = 0;
 		if (!timer->active) {
-			bsc_del_timer(timer);
+			osmo_timer_del(timer);
 		}
 	}
 
 	return work;
 }
 
-int bsc_timer_check(void)
+int osmo_timers_check(void)
 {
-	struct timer_list *timer;
+	struct osmo_timer_list *timer;
 	int i = 0;
 
 	llist_for_each_entry(timer, &timer_list, entry) {
