|
@@ -33,15 +33,18 @@
|
|
|
#include <linux/sched/task_stack.h>
|
|
|
#endif
|
|
|
|
|
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
|
|
struct __qdf_timer_t {
|
|
|
struct timer_list os_timer;
|
|
|
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
|
|
qdf_timer_func_t callback;
|
|
|
void *context;
|
|
|
-#endif
|
|
|
};
|
|
|
+#else
|
|
|
+typedef struct timer_list __qdf_timer_t;
|
|
|
+#endif
|
|
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
|
|
+
|
|
|
static inline void __os_timer_shim(struct timer_list *os_timer)
|
|
|
{
|
|
|
struct __qdf_timer_t *timer = from_timer(timer, os_timer, os_timer);
|
|
@@ -70,6 +73,38 @@ static inline QDF_STATUS __qdf_timer_init(struct __qdf_timer_t *timer,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+static inline void __qdf_timer_start(struct __qdf_timer_t *timer, uint32_t msec)
|
|
|
+{
|
|
|
+ struct timer_list *os_timer = &timer->os_timer;
|
|
|
+
|
|
|
+ os_timer->expires = jiffies + msecs_to_jiffies(msec);
|
|
|
+ add_timer(os_timer);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void __qdf_timer_mod(struct __qdf_timer_t *timer, uint32_t msec)
|
|
|
+{
|
|
|
+ mod_timer(&timer->os_timer, jiffies + msecs_to_jiffies(msec));
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool __qdf_timer_stop(struct __qdf_timer_t *timer)
|
|
|
+{
|
|
|
+ return !!del_timer(&timer->os_timer);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void __qdf_timer_free(struct __qdf_timer_t *timer)
|
|
|
+{
|
|
|
+ struct timer_list *os_timer = &timer->os_timer;
|
|
|
+
|
|
|
+ del_timer_sync(os_timer);
|
|
|
+
|
|
|
+ if (object_is_on_stack(os_timer))
|
|
|
+ destroy_timer_on_stack(os_timer);
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool __qdf_timer_sync_cancel(struct __qdf_timer_t *timer)
|
|
|
+{
|
|
|
+ return del_timer_sync(&timer->os_timer);
|
|
|
+}
|
|
|
#else
|
|
|
|
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
|
|
@@ -79,11 +114,10 @@ static inline QDF_STATUS __qdf_timer_init(struct __qdf_timer_t *timer,
|
|
|
|
|
|
typedef void (*__legacy_timer_callback_t)(unsigned long arg);
|
|
|
|
|
|
-static inline QDF_STATUS __qdf_timer_init(struct __qdf_timer_t *timer,
|
|
|
+static inline QDF_STATUS __qdf_timer_init(__qdf_timer_t *os_timer,
|
|
|
qdf_timer_func_t func, void *arg,
|
|
|
QDF_TIMER_TYPE type)
|
|
|
{
|
|
|
- struct timer_list *os_timer = &timer->os_timer;
|
|
|
bool is_on_stack = object_is_on_stack(os_timer);
|
|
|
__legacy_timer_callback_t callback = (__legacy_timer_callback_t)func;
|
|
|
unsigned long ctx = (unsigned long)arg;
|
|
@@ -103,39 +137,35 @@ static inline QDF_STATUS __qdf_timer_init(struct __qdf_timer_t *timer,
|
|
|
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
-#endif /* KERNEL_VERSION(4, 15, 0)*/
|
|
|
|
|
|
-static inline void __qdf_timer_start(struct __qdf_timer_t *timer, uint32_t msec)
|
|
|
+static inline void __qdf_timer_start(__qdf_timer_t *timer, uint32_t msec)
|
|
|
{
|
|
|
- struct timer_list *os_timer = &timer->os_timer;
|
|
|
-
|
|
|
- os_timer->expires = jiffies + msecs_to_jiffies(msec);
|
|
|
- add_timer(os_timer);
|
|
|
+ timer->expires = jiffies + msecs_to_jiffies(msec);
|
|
|
+ add_timer(timer);
|
|
|
}
|
|
|
|
|
|
-static inline void __qdf_timer_mod(struct __qdf_timer_t *timer, uint32_t msec)
|
|
|
+static inline void __qdf_timer_mod(__qdf_timer_t *timer, uint32_t msec)
|
|
|
{
|
|
|
- mod_timer(&timer->os_timer, jiffies + msecs_to_jiffies(msec));
|
|
|
+ mod_timer(timer, jiffies + msecs_to_jiffies(msec));
|
|
|
}
|
|
|
|
|
|
-static inline bool __qdf_timer_stop(struct __qdf_timer_t *timer)
|
|
|
+static inline bool __qdf_timer_stop(__qdf_timer_t *timer)
|
|
|
{
|
|
|
- return !!del_timer(&timer->os_timer);
|
|
|
+ return !!del_timer(timer);
|
|
|
}
|
|
|
|
|
|
-static inline void __qdf_timer_free(struct __qdf_timer_t *timer)
|
|
|
+static inline void __qdf_timer_free(__qdf_timer_t *timer)
|
|
|
{
|
|
|
- struct timer_list *os_timer = &timer->os_timer;
|
|
|
+ del_timer_sync(timer);
|
|
|
|
|
|
- del_timer_sync(os_timer);
|
|
|
-
|
|
|
- if (object_is_on_stack(os_timer))
|
|
|
- destroy_timer_on_stack(os_timer);
|
|
|
+ if (object_is_on_stack(timer))
|
|
|
+ destroy_timer_on_stack(timer);
|
|
|
}
|
|
|
|
|
|
-static inline bool __qdf_timer_sync_cancel(struct __qdf_timer_t *timer)
|
|
|
+static inline bool __qdf_timer_sync_cancel(__qdf_timer_t *timer)
|
|
|
{
|
|
|
- return del_timer_sync(&timer->os_timer);
|
|
|
+ return del_timer_sync(timer);
|
|
|
}
|
|
|
|
|
|
+#endif /* KERNEL_VERSION(4, 15, 0)*/
|
|
|
#endif /* _I_QDF_TIMER_H */
|