* Version lincan-0.2 9 Jul 2003
*/
-#define __NO_VERSION__
-#include <linux/module.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 <linux/wait.h>
#include "../include/can.h"
+#include "../include/can_sysdep.h"
#include "../include/can_queue.h"
#include "../include/main.h"
#include "../include/devcommon.h"
/*case CANQUEUE_NOTIFY_EMPTY:*/
/*case CANQUEUE_NOTIFY_SPACE:*/
/*case CANQUEUE_NOTIFY_NOUSR:
- wake_up_interruptible(&qends->endinfo.chipinfo.daemonq);
+ wake_up(&qends->endinfo.chipinfo.daemonq);
break;*/
case CANQUEUE_NOTIFY_PROC:
- /*wake_up_interruptible(&qends->endinfo.chipinfo.daemonq);*/
+ /*wake_up(&qends->endinfo.chipinfo.daemonq);*/
chip->chipspecops->wakeup_tx(chip, obj);
break;
+ case CANQUEUE_NOTIFY_DEAD_WANTED:
case CANQUEUE_NOTIFY_DEAD:
- if(atomic_read(&qedge->edge_used)>0)
- atomic_dec(&qedge->edge_used);
+ if(canque_fifo_test_and_clear_fl(&qedge->fifo, READY))
+ canque_edge_decref(qedge);
break;
- case CANQUEUE_NOTIFY_ATACH:
- atomic_inc(&qedge->edge_used);
+ case CANQUEUE_NOTIFY_ATTACH:
break;
}
}
}
+int canqueue_ends_done_chip(struct canque_ends_t *qends)
+{
+ int delayed;
+
+ /* Finish or kill all outgoing edges listed in inends */
+ delayed=canqueue_ends_kill_inlist(qends, 1);
+ /* Kill all incoming edges listed in outends */
+ delayed|=canqueue_ends_kill_outlist(qends);
+
+ return delayed;
+}