Stephen Hemminger
2007-Apr-18 12:34 UTC
[Bridge] [PATCH] (7/11) bridge -- expose timer_residue function for use by sysfs
Move the local function timer_residue to br_timer_value so it can
be used by both ioctl and sysfs code.
diff -Nru a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
--- a/net/bridge/br_ioctl.c 2004-05-20 10:22:21 -07:00
+++ b/net/bridge/br_ioctl.c 2004-05-20 10:22:21 -07:00
@@ -20,13 +20,6 @@
#include <asm/uaccess.h>
#include "br_private.h"
-/* Report time remaining in user HZ */
-static unsigned long timer_residue(const struct timer_list *timer)
-{
- return timer_pending(timer)
- ? jiffies_to_clock_t(timer->expires - jiffies) : 0;
-}
-
/* called with RTNL */
static int get_bridge_ifindices(int *indices, int num)
{
@@ -139,10 +132,10 @@
b.root_port = br->root_port;
b.stp_enabled = br->stp_enabled;
b.ageing_time = jiffies_to_clock_t(br->ageing_time);
- b.hello_timer_value = timer_residue(&br->hello_timer);
- b.tcn_timer_value = timer_residue(&br->tcn_timer);
- b.topology_change_timer_value =
timer_residue(&br->topology_change_timer);
- b.gc_timer_value = timer_residue(&br->gc_timer);
+ b.hello_timer_value = br_timer_value(&br->hello_timer);
+ b.tcn_timer_value = br_timer_value(&br->tcn_timer);
+ b.topology_change_timer_value =
br_timer_value(&br->topology_change_timer);
+ b.gc_timer_value = br_timer_value(&br->gc_timer);
rcu_read_unlock();
if (copy_to_user((void *)args[1], &b, sizeof(b)))
@@ -237,9 +230,9 @@
p.state = pt->state;
p.top_change_ack = pt->topology_change_ack;
p.config_pending = pt->config_pending;
- p.message_age_timer_value = timer_residue(&pt->message_age_timer);
- p.forward_delay_timer_value = timer_residue(&pt->forward_delay_timer);
- p.hold_timer_value = timer_residue(&pt->hold_timer);
+ p.message_age_timer_value = br_timer_value(&pt->message_age_timer);
+ p.forward_delay_timer_value =
br_timer_value(&pt->forward_delay_timer);
+ p.hold_timer_value = br_timer_value(&pt->hold_timer);
rcu_read_unlock();
diff -Nru a/net/bridge/br_private.h b/net/bridge/br_private.h
--- a/net/bridge/br_private.h 2004-05-20 10:22:21 -07:00
+++ b/net/bridge/br_private.h 2004-05-20 10:22:21 -07:00
@@ -208,5 +208,6 @@
/* br_stp_timer.c */
extern void br_stp_timer_init(struct net_bridge *br);
extern void br_stp_port_timer_init(struct net_bridge_port *p);
+extern unsigned long br_timer_value(const struct timer_list *timer);
#endif
diff -Nru a/net/bridge/br_stp_timer.c b/net/bridge/br_stp_timer.c
--- a/net/bridge/br_stp_timer.c 2004-05-20 10:22:21 -07:00
+++ b/net/bridge/br_stp_timer.c 2004-05-20 10:22:21 -07:00
@@ -14,6 +14,7 @@
*/
#include <linux/kernel.h>
+#include <linux/times.h>
#include <linux/smp_lock.h>
#include "br_private.h"
@@ -178,3 +179,10 @@
br_timer_init(&p->hold_timer, br_hold_timer_expired,
(unsigned long) p);
}
+
+/* Report ticks left (in USER_HZ) used for API */
+unsigned long br_timer_value(const struct timer_list *timer)
+{
+ return timer_pending(timer)
+ ? jiffies_to_clock_t(timer->expires - jiffies) : 0;
+}