X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/3129fcd8094edcb910b708463fdf1a234f11fb55..2827b727d2910a3b48f9de7d67b3a67f59e256c7:/lincan/src/read.c diff --git a/lincan/src/read.c b/lincan/src/read.c index 92fcb68..8824890 100644 --- a/lincan/src/read.c +++ b/lincan/src/read.c @@ -7,21 +7,8 @@ * Version lincan-0.2 9 Jul 2003 */ -#define __NO_VERSION__ -#include - -#include - -#include -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) -#include -#else -#include -#endif -#include -#include -#include - +#include "../include/can.h" +#include "../include/can_sysdep.h" #include "../include/main.h" #include "../include/read.h" #include "../include/ioctl.h" @@ -76,16 +63,16 @@ inline ssize_t can_std_read(struct file *file, struct canque_ends_t *qends, inline ssize_t can_rtr_read(struct chip_t *chip, struct msgobj_t *obj, char *buffer) { - unsigned long flags; + can_spin_irqflags_t flags; struct rtr_id *rtr_current, *new_rtr_entry; struct canmsg_t read_msg; DEBUGMSG("Remote transmission request\n"); - spin_lock_irqsave(&hardware_p->rtr_lock, flags); + can_spin_lock_irqsave(&hardware_p->rtr_lock, flags); if (hardware_p->rtr_queue == NULL) { //No remote messages pending new_rtr_entry=(struct rtr_id *)kmalloc(sizeof(struct rtr_id),GFP_ATOMIC); if (new_rtr_entry == NULL) { - spin_unlock_irqrestore(&hardware_p->rtr_lock, + can_spin_unlock_irqrestore(&hardware_p->rtr_lock, flags); return -ENOMEM; } @@ -103,14 +90,14 @@ inline ssize_t can_rtr_read(struct chip_t *chip, struct msgobj_t *obj, new_rtr_entry->rtr_message = &read_msg; new_rtr_entry->next=NULL; - spin_unlock_irqrestore(&hardware_p->rtr_lock, flags); + can_spin_unlock_irqrestore(&hardware_p->rtr_lock, flags); /* Send remote transmission request */ chip->chipspecops->remote_request(chip,obj); obj->ret = 0; interruptible_sleep_on(&new_rtr_entry->rtr_wq); - spin_lock_irqsave(&hardware_p->rtr_lock, flags); + can_spin_lock_irqsave(&hardware_p->rtr_lock, flags); copy_to_user(buffer, &read_msg, sizeof(struct canmsg_t)); if (hardware_p->rtr_queue == new_rtr_entry) { if (new_rtr_entry->next != NULL) @@ -127,7 +114,7 @@ inline ssize_t can_rtr_read(struct chip_t *chip, struct msgobj_t *obj, else rtr_current->next=NULL; } - spin_unlock_irqrestore(&hardware_p->rtr_lock, flags); + can_spin_unlock_irqrestore(&hardware_p->rtr_lock, flags); kfree(new_rtr_entry); return obj->ret; @@ -143,7 +130,7 @@ ssize_t can_read(struct file *file, char *buffer, size_t length, loff_t *offset) int ret=0; if(!canuser || (canuser->magic != CAN_USER_MAGIC)){ - CANMSG("can_close: bad canuser magic\n"); + CANMSG("can_read: bad canuser magic\n"); return -ENODEV; } @@ -152,11 +139,6 @@ ssize_t can_read(struct file *file, char *buffer, size_t length, loff_t *offset) DEBUGMSG("this will always return zero.\n"); return 0; } - if (length > 8 * sizeof(struct canmsg_t)) { - DEBUGMSG("Reading more than 8 CAN messages, this is not supported.\n"); - DEBUGMSG("Defaulting to 8 messages.\n"); - length = 8 * sizeof(struct canmsg_t); - } /* Initialize hardware pointers */ obj = canuser->msgobj; if (obj == NULL) {