]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/include/can_queue.h
Added full RT-Linux POSIX interface to LinCAN driver, needs preparation of RT tests.
[lincan.git] / lincan / include / can_queue.h
index aacfd846f2b52ebfada182ef72a91897a8810d5b..b8cbb0989b7286a1006aa62e57c930e5ca48e8aa 100644 (file)
@@ -362,8 +362,11 @@ struct canque_ends_t {
                struct {
                        rtl_spinlock_t rtl_lock;
                        rtl_wait_t rtl_readq;
                struct {
                        rtl_spinlock_t rtl_lock;
                        rtl_wait_t rtl_readq;
+                       atomic_t   rtl_readq_age;
                        rtl_wait_t rtl_writeq;
                        rtl_wait_t rtl_writeq;
+                       atomic_t   rtl_writeq_age;
                        rtl_wait_t rtl_emptyq;
                        rtl_wait_t rtl_emptyq;
+                       atomic_t   rtl_emptyq_age;
                        unsigned long pend_flags;
                } rtlinfo;
            #endif /*CAN_WITH_RTL*/
                        unsigned long pend_flags;
                } rtlinfo;
            #endif /*CAN_WITH_RTL*/
@@ -687,7 +690,16 @@ void canqueue_ends_dispose_postpone(struct canque_ends_t *qends);
 void canqueue_kern_initialize(void);
 
 #ifdef CAN_WITH_RTL
 void canqueue_kern_initialize(void);
 
 #ifdef CAN_WITH_RTL
-/* RT-Linux specific functions */
+
+extern struct tasklet_struct canque_dead_tl;   /*publication required only for RTL*/
+
+/* RT-Linux specific functions and variables */
+
+extern int canqueue_rtl_irq;
+
+extern unsigned long canqueue_rtl2lin_pend;
+
+#define CAN_RTL2LIN_PEND_DEAD_b 0
 
 void canqueue_rtl_initialize(void);
 void canqueue_rtl_done(void);
 
 void canqueue_rtl_initialize(void);
 void canqueue_rtl_done(void);
@@ -699,8 +711,19 @@ struct canque_edge_t *canque_new_edge_rtl(int slotsnr);
 
 void canque_dispose_edge_rtl(struct canque_edge_t *qedge);
 
 
 void canque_dispose_edge_rtl(struct canque_edge_t *qedge);
 
+int canque_get_inslot4id_wait_rtl(struct canque_ends_t *qends,
+       struct canque_edge_t **qedgep, struct canque_slot_t **slotp,
+       int cmd, unsigned long id, int prio);
+
+int canque_get_outslot_wait_rtl(struct canque_ends_t *qends,
+       struct canque_edge_t **qedgep, struct canque_slot_t **slotp);
+
+int canque_sync_wait_rtl(struct canque_ends_t *qends, struct canque_edge_t *qedge);
+
 void canque_ends_free_rtl(struct canque_ends_t *qends);
 
 void canque_ends_free_rtl(struct canque_ends_t *qends);
 
+int canqueue_ends_init_rtl(struct canque_ends_t *qends);
+
 int canqueue_ends_dispose_rtl(struct canque_ends_t *qends, int sync);
 
 #else /*CAN_WITH_RTL*/
 int canqueue_ends_dispose_rtl(struct canque_ends_t *qends, int sync);
 
 #else /*CAN_WITH_RTL*/