* Version lincan-0.2 9 Jul 2003
*/
-#define __NO_VERSION__
-#include <linux/module.h>
-
-#include <linux/autoconf.h>
-
-#include <linux/fs.h>
-#include <linux/version.h>
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
-#include <linux/malloc.h>
-#else
-#include <linux/slab.h>
-#endif
-
+#include "../include/can.h"
+#include "../include/can_sysdep.h"
#include "../include/main.h"
#include "../include/close.h"
#include "../include/i82527.h"
#include "../include/setup.h"
+#include "../include/fasync.h"
+
+#define __NO_VERSION__
+#include <linux/module.h>
int can_close(struct inode *inode, struct file *file)
{
obj = canuser->msgobj;
qends = canuser->qends;
+ #ifdef CAN_ENABLE_KERN_FASYNC
+
+ can_fasync(-1, file, 0);
+
+ #endif /*CAN_ENABLE_KERN_FASYNC*/
+
list_del(&canuser->peers);
- canqueue_ends_done_kern(qends, 1);
canuser->qends = NULL;
- kfree(qends);
+ canqueue_ends_dispose_kern(qends, file->f_flags & O_SYNC);
kfree(canuser);
/* FIXME: what about clearing chip HW status, stopping sending messages etc? */
};
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,50))
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,50))
MOD_DEC_USE_COUNT;
-#endif
+ #endif
return 0;
}