-/* can_sysdep.h - hides differences between individual Linux kernel
- * versions and RT extensions
+/* can_sysdep.h - hides differences between individual Linux kernel
+ * versions and RT extensions
* Linux CAN-bus device driver.
* Written by Pavel Pisa - OCERA team member
* email:pisa@cmp.felk.cvut.cz
#define can_spin_unlock_irqrestore spin_unlock_irqrestore
#define can_spin_lock_init spin_lock_init
+#ifndef DEFINE_SPINLOCK
+#define CAN_DEFINE_SPINLOCK(x) can_spinlock_t x = SPIN_LOCK_UNLOCKED
+#else /*DEFINE_SPINLOCK*/
+#define CAN_DEFINE_SPINLOCK DEFINE_SPINLOCK
+#endif /*DEFINE_SPINLOCK*/
+
#if defined(CONFIG_PREEMPT) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
#define can_preempt_disable preempt_disable
#define can_preempt_enable preempt_enable
#define can_spin_unlock_irqrestore rtl_spin_unlock_irqrestore
#define can_spin_lock_init rtl_spin_lock_init
+#define CAN_DEFINE_SPINLOCK(x) can_spinlock_t x = SPIN_LOCK_UNLOCKED
+
#define can_preempt_disable() do { } while (0)
#define can_preempt_enable() do { } while (0)
/*
* terrible hack to test rtl_file private_data concept, ugh !!!
- * this would result in crash on architectures, where
+ * this would result in crash on architectures, where
* sizeof(int) < sizeof(void *)
*/
#define can_set_rtl_file_private_data(fptr, p) do{ fptr->f_minor=(long)(p); } while(0)
#endif /*CAN_WITH_RTL*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,4))
+ #include <linux/kthread.h>
+ #define can_kthread_create kthread_create
+ #define can_kthread_run kthread_run
+ #define can_kthread_bind kthread_bind
+ #define can_kthread_stop kthread_stop
+ #define can_kthread_should_stop kthread_should_stop
+#else
+ #define can_kthread_create
+ #define can_kthread_run
+ #define can_kthread_bind
+ #define can_kthread_stop
+ #define can_kthread_should_stop
+#endif
+
+
#endif /*_CAN_SYSDEP_H*/