tcp_timer: Add assertion to make sure that tcp timers are only accessed
[dragonfly.git] / sys / netinet / tcp_timer2.h
index ad2ce4c..32abc96 100644 (file)
 
 #ifdef _KERNEL
 
+#ifndef _SYS_PARAM_H_
+#include <sys/param.h>
+#endif
+
+#ifndef _SYS_SYSTM_H_
+#include <sys/systm.h>
+#endif
+
 #ifndef _SYS_THREAD2_H_
 #include <sys/thread2.h>
 #endif
 static __inline void
 tcp_callout_stop(struct tcpcb *_tp, struct tcp_callout *_tc)
 {
+       KKASSERT(_tp->tt_msg->tt_cpuid == mycpuid);
+
        crit_enter();
        callout_stop(&_tc->tc_callout);
-       if (_tp->tt_msg != NULL) {
-               _tp->tt_msg->tt_tasks &= ~_tc->tc_task;
-               _tp->tt_msg->tt_running_tasks &= ~_tc->tc_task;
-       }
+       _tp->tt_msg->tt_tasks &= ~_tc->tc_task;
+       _tp->tt_msg->tt_running_tasks &= ~_tc->tc_task;
        crit_exit();
 }
 
@@ -72,12 +80,12 @@ static __inline void
 tcp_callout_reset(struct tcpcb *_tp, struct tcp_callout *_tc, int _to_ticks,
                  void (*_func)(void *))
 {
+       KKASSERT(_tp->tt_msg->tt_cpuid == mycpuid);
+
        crit_enter();
        callout_reset(&_tc->tc_callout, _to_ticks, _func, _tp);
-       if (_tp->tt_msg != NULL) {
-               _tp->tt_msg->tt_tasks &= ~_tc->tc_task;
-               _tp->tt_msg->tt_running_tasks &= ~_tc->tc_task;
-       }
+       _tp->tt_msg->tt_tasks &= ~_tc->tc_task;
+       _tp->tt_msg->tt_running_tasks &= ~_tc->tc_task;
        crit_exit();
 }
 
@@ -86,9 +94,11 @@ tcp_callout_active(struct tcpcb *_tp, struct tcp_callout *_tc)
 {
        int _act;
 
+       KKASSERT(_tp->tt_msg->tt_cpuid == mycpuid);
+
        crit_enter();
        _act = callout_active(&_tc->tc_callout);
-       if (!_act && _tp->tt_msg != NULL) {
+       if (!_act) {
                _act = (_tp->tt_msg->tt_tasks |
                        _tp->tt_msg->tt_running_tasks) & _tc->tc_task;
        }
@@ -97,8 +107,10 @@ tcp_callout_active(struct tcpcb *_tp, struct tcp_callout *_tc)
 }
 
 static __inline int
-tcp_callout_pending(struct tcpcb *_tp __unused, struct tcp_callout *_tc)
+tcp_callout_pending(struct tcpcb *_tp, struct tcp_callout *_tc)
 {
+       KKASSERT(_tp->tt_msg->tt_cpuid == mycpuid);
+
        return callout_pending(&_tc->tc_callout);
 }