summaryrefslogtreecommitdiff
path: root/package/openwrt/libshared
diff options
context:
space:
mode:
authorkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-06-10 00:58:19 +0000
committerkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-06-10 00:58:19 +0000
commitb8157c22274d96911ec48bcf9e870ea2d3622b28 (patch)
tree90a8cfec2c46234c1517daf815f1e9c1ce044c19 /package/openwrt/libshared
parent2a7362a73ef3221388dd388ef7703966ff336305 (diff)
fix nas compatibility and overrides for newer wla2-g54l units
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1181 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/openwrt/libshared')
-rw-r--r--package/openwrt/libshared/bcmtimer.h2
-rw-r--r--package/openwrt/libshared/linux_timer.c35
2 files changed, 35 insertions, 2 deletions
diff --git a/package/openwrt/libshared/bcmtimer.h b/package/openwrt/libshared/bcmtimer.h
index 560957cbfd..3db9e624f9 100644
--- a/package/openwrt/libshared/bcmtimer.h
+++ b/package/openwrt/libshared/bcmtimer.h
@@ -30,11 +30,13 @@ typedef void (*bcm_timer_cb)(bcm_timer_id id, int data);
/* OS-independant interfaces, applications should call these functions only */
int bcm_timer_module_init(int timer_entries, bcm_timer_module_id *module_id);
int bcm_timer_module_cleanup(bcm_timer_module_id module_id);
+int bcm_timer_module_enable(bcm_timer_module_id module_id, int enable);
int bcm_timer_create(bcm_timer_module_id module_id, bcm_timer_id *timer_id);
int bcm_timer_delete(bcm_timer_id timer_id);
int bcm_timer_gettime(bcm_timer_id timer_id, struct itimerspec *value);
int bcm_timer_settime(bcm_timer_id timer_id, const struct itimerspec *value);
int bcm_timer_connect(bcm_timer_id timer_id, bcm_timer_cb func, int data);
int bcm_timer_cancel(bcm_timer_id timer_id);
+int bcm_timer_change_expirytime(bcm_timer_id timer_id, const struct itimerspec *timer_spec);
#endif /* #ifndef __bcmtimer_h__ */
diff --git a/package/openwrt/libshared/linux_timer.c b/package/openwrt/libshared/linux_timer.c
index eece9f84e8..0402e44378 100644
--- a/package/openwrt/libshared/linux_timer.c
+++ b/package/openwrt/libshared/linux_timer.c
@@ -112,7 +112,7 @@ static void check_timer();
#if THIS_FINDS_USE
static int count_queue(struct event *);
#endif
-
+static int timer_change_settime(timer_t timer_id, const struct itimerspec *timer_spec);
void block_timer();
void unblock_timer();
@@ -247,6 +247,23 @@ int timer_connect
return 0;
}
+/*
+ * Please Call this function only from the call back functions of the alarm_handler.
+ * This is just a hack
+*/
+int timer_change_settime
+(
+ timer_t timerid, /* timer ID */
+ const struct itimerspec * value /* time to be set */
+)
+{
+ struct event *event = (struct event *) timerid;
+
+ TIMESPEC_TO_TIMEVAL(&event->it_interval, &value->it_interval);
+ TIMESPEC_TO_TIMEVAL(&event->it_value, &value->it_value);
+
+ return 1;
+}
int timer_settime
(
@@ -673,6 +690,16 @@ int bcm_timer_module_cleanup(bcm_timer_module_id module_id)
return 0;
}
+/* Enable/Disable timer module */
+int bcm_timer_module_enable(bcm_timer_module_id module_id, int enable)
+{
+ if (enable)
+ unblock_timer();
+ else
+ block_timer();
+ return 0;
+}
+
int bcm_timer_create(bcm_timer_module_id module_id, bcm_timer_id *timer_id)
{
module_id = 0;
@@ -704,4 +731,8 @@ int bcm_timer_cancel(bcm_timer_id timer_id)
timer_cancel((timer_t)timer_id);
return 0;
}
-
+int bcm_timer_change_expirytime(bcm_timer_id timer_id, const struct itimerspec *timer_spec)
+{
+ timer_change_settime((timer_t)timer_id, timer_spec);
+ return 1;
+}