#include "../include/finish.h"
#include "../include/fasync.h"
+#ifdef CAN_WITH_RTL
+#include <rtl_posixio.h>
+#include "../include/can_iortl.h"
+#endif /*CAN_WITH_RTL*/
+
#define EXPORT_SYMTAB
+can_spinlock_t canuser_manipulation_lock;
+
/* Module parameters, some must be supplied at module loading time */
int major=CAN_MAJOR;
MODULE_PARM(major,"1i");
EXPORT_SYMBOL(can_fops);
+
+#ifdef CAN_WITH_RTL
+struct rtl_file_operations can_fops_rtl = {
+ llseek: NULL,
+ read: can_read_rtl_posix,
+ write: can_write_rtl_posix,
+ ioctl: can_ioctl_rtl_posix,
+ mmap: NULL,
+ open: can_open_rtl_posix,
+ release: can_release_rtl_posix
+};
+#endif /*CAN_WITH_RTL*/
+
+
int init_module(void)
{
int res=0,i=0, j;
#ifdef CAN_WITH_RTL
canqueue_rtl_initialize();
+ res=rtl_register_rtldev(major,DEVICE_NAME,&can_fops_rtl);
+ if (res<0) {
+ CANMSG("Error registering RT-Linux major number.\n");
+ goto rtldev_error;
+ }
#endif /*CAN_WITH_RTL*/
for (i=0; i<hardware_p->nr_boards; i++) {
canhardware_done(hardware_p);
#ifdef CAN_WITH_RTL
+ rtl_unregister_rtldev(major,DEVICE_NAME);
+ rtldev_error:
canqueue_rtl_done();
#endif /*CAN_WITH_RTL*/
canhardware_done(hardware_p);
#ifdef CAN_WITH_RTL
+ rtl_unregister_rtldev(major,DEVICE_NAME);
canqueue_rtl_done();
#endif /*CAN_WITH_RTL*/