#define EXPORT_SYMTAB
#endif
-#include <linux/autoconf.h>
-
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/poll.h>
#include <linux/version.h>
-#include <linux/autoconf.h>
#include <linux/interrupt.h>
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,0))
+ #include <linux/autoconf.h>
#include <linux/wrapper.h>
#else
#include <linux/device.h>
#endif
#endif
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
+static int can_oldapi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+{
+ return can_ioctl(file, cmd, arg);
+}
+#endif /* 2.6.36 */
+
/* Pointers to dynamically allocated memory are maintained in a linked list
* to ease memory deallocation.
*/
read: can_read,
write: can_write,
poll: can_poll,
- ioctl: can_ioctl,
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
+ ioctl: can_oldapi_ioctl,
+ #else /* Linux 3.x */
+ unlocked_ioctl: can_ioctl,
+ #endif /* Linux 3.x */
open: can_open,
release: can_close,
#ifdef CAN_ENABLE_KERN_FASYNC
this_dev=class_device_create(can_class, MKDEV(major, dev_minor), NULL, "can%d", dev_minor);
#elif LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25) /* >= 2.6.15 */
this_dev=class_device_create(can_class, NULL, MKDEV(major, dev_minor), NULL, "can%d", dev_minor);
- #else /* >= 2.6.26 */
+ #elif LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)
this_dev=device_create_drvdata(can_class, NULL, MKDEV(major, dev_minor), objects_p[i], "can%d", dev_minor);
- #endif /* >= 2.6.26 */
+ #else /* >= 2.6.28 */
+ this_dev=device_create(can_class, NULL, MKDEV(major, dev_minor), objects_p[i], "can%d", dev_minor);
+ #endif /* >= 2.6.28 */
if(IS_ERR(this_dev)){
CANMSG("problem to create device \"can%d\" in the class \"can\"\n", dev_minor);
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25)