diff options
author | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2005-06-10 00:58:19 +0000 |
---|---|---|
committer | kaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2005-06-10 00:58:19 +0000 |
commit | b8157c22274d96911ec48bcf9e870ea2d3622b28 (patch) | |
tree | 90a8cfec2c46234c1517daf815f1e9c1ce044c19 /package/openwrt/libshared | |
parent | 2a7362a73ef3221388dd388ef7703966ff336305 (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.h | 2 | ||||
-rw-r--r-- | package/openwrt/libshared/linux_timer.c | 35 |
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; +} |