]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/can_quekern.c
Included support for PiMX1 board with SJA1000 on MX_DIS1 expansion board.
[lincan.git] / lincan / src / can_quekern.c
index 5089e5cbc2c8aec6cbc9ad95d51385c4afd65ff3..ac1554c7cb52b08beed9fc4380e5eada9f9ce5eb 100644 (file)
@@ -3,7 +3,7 @@
  * New CAN queues by Pavel Pisa - OCERA team member
  * email:pisa@cmp.felk.cvut.cz
  * This software is released under the GPL-License.
- * Version lincan-0.2  9 Jul 2003
+ * Version lincan-0.3  17 Jun 2004
  */
 
 #include "../include/can.h"
@@ -122,12 +122,10 @@ static inline void canque_dead_tasklet_schedule(void)
 }
 
 
-void canque_edge_do_dead(struct canque_edge_t *edge, int dead_fl)
+void canque_edge_do_dead(struct canque_edge_t *edge)
 {
        can_spin_irqflags_t flags;
        
-       if(dead_fl) return;
-       
        canque_notify_bothends(edge,CANQUEUE_NOTIFY_NOUSR);
     #ifdef CAN_WITH_RTL
        /* The problem of the above call is, that in RT-Linux to Linux notify
@@ -176,6 +174,13 @@ void canque_edge_do_dead(struct canque_edge_t *edge, int dead_fl)
  * @qends: pointer to the callback side ends structure
  * @qedge: edge which invoked notification 
  * @what: notification type
+ *
+ * The notification event is handled directly by call of this function except case,
+ * when called from RT-Linux context in mixed mode Linux/RT-Linux compilation.
+ * It is not possible to directly call Linux kernel synchronization primitives
+ * in such case. The notification request is postponed and signaled by @pending_inops flags
+ * by call canqueue_rtl2lin_check_and_pend() function. 
+ * The edge reference count is increased until until all pending notifications are processed.
  */
 void canqueue_notify_kern(struct canque_ends_t *qends, struct canque_edge_t *qedge, int what)
 {
@@ -376,7 +381,7 @@ struct canque_edge_t *canque_new_edge_kern(int slotsnr)
 
 #ifdef USE_SYNC_DISCONNECT_EDGE_KERN
 
-/**
+/*not included in doc
  * canqueue_disconnect_edge_kern - disconnect edge from communicating entities with wait
  * @qends: ends structure belonging to calling communication object
  * @qedge: pointer to edge