21 #ifndef _COBALT_RTDM_ANALOGY_RTDM_HELPERS_H 22 #define _COBALT_RTDM_ANALOGY_RTDM_HELPERS_H 25 #include <linux/spinlock.h> 26 #include <linux/sched.h> 27 #include <linux/time.h> 28 #include <linux/delay.h> 29 #include <linux/interrupt.h> 30 #include <linux/uaccess.h> 34 #define A4L_PROMPT "Analogy: " 36 #define RTDM_SUBCLASS_ANALOGY 0 38 #define __a4l_err(fmt, args...) rtdm_printk(KERN_ERR A4L_PROMPT fmt, ##args) 39 #define __a4l_warn(fmt, args...) rtdm_printk(KERN_WARNING A4L_PROMPT fmt, ##args) 41 #ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE 42 #define __a4l_info(fmt, args...) trace_printk(fmt, ##args) 44 #define __a4l_info(fmt, args...) \ 45 rtdm_printk(KERN_INFO A4L_PROMPT "%s: " fmt, __FUNCTION__, ##args) 48 #ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG 49 #ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE 50 #define __a4l_dbg(level, debug, fmt, args...) \ 52 if ((debug) >= (level)) \ 53 trace_printk(fmt, ##args); \ 56 #define __a4l_dbg(level, debug, fmt, args...) \ 58 if ((debug) >= (level)) \ 59 rtdm_printk(KERN_DEBUG A4L_PROMPT "%s: " fmt, __FUNCTION__ , ##args); \ 63 #define core_dbg CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_LEVEL 64 #define drv_dbg CONFIG_XENO_DRIVERS_ANALOGY_DRIVER_DEBUG_LEVEL 68 #define __a4l_dbg(level, debug, fmt, args...) 72 #define __a4l_dev_name(dev) \ 73 (dev->driver == NULL) ? "unattached dev" : dev->driver->board_name 75 #define a4l_err(dev, fmt, args...) \ 76 __a4l_err("%s: " fmt, __a4l_dev_name(dev), ##args) 78 #define a4l_warn(dev, fmt, args...) \ 79 __a4l_warn("%s: " fmt, __a4l_dev_name(dev), ##args) 81 #define a4l_info(dev, fmt, args...) \ 82 __a4l_info("%s: " fmt, __a4l_dev_name(dev), ##args) 84 #define a4l_dbg(level, debug, dev, fmt, args...) \ 85 __a4l_dbg(level, debug, "%s: " fmt, __a4l_dev_name(dev), ##args) 89 static inline void a4l_udelay(
unsigned int us)
98 void a4l_init_time(
void);
101 #define A4L_IRQ_DISABLED 0 103 typedef int (*a4l_irq_hdlr_t) (
unsigned int irq,
void *d);
105 struct a4l_irq_descriptor {
108 a4l_irq_hdlr_t handler;
111 rtdm_irq_t rtdm_desc;
114 int __a4l_request_irq(
struct a4l_irq_descriptor * dsc,
116 a4l_irq_hdlr_t handler,
117 unsigned long flags,
void *cookie);
118 int __a4l_free_irq(
struct a4l_irq_descriptor * dsc);
121 #define __NRT_WAITER 1 122 #define __RT_WAITER 2 123 #define __EVT_PDING 3 126 unsigned long status;
127 rtdm_event_t rtdm_evt;
128 rtdm_nrtsig_t nrt_sig;
129 wait_queue_head_t wq;
132 #define a4l_select_sync(snc, slr, type, fd) \ 133 rtdm_event_select(&((snc)->rtdm_evt), slr, type, fd) 135 int a4l_init_sync(
struct a4l_sync * snc);
136 void a4l_cleanup_sync(
struct a4l_sync * snc);
137 void a4l_flush_sync(
struct a4l_sync * snc);
138 int a4l_wait_sync(
struct a4l_sync * snc,
int rt);
139 int a4l_timedwait_sync(
struct a4l_sync * snc,
140 int rt,
unsigned long long ns_timeout);
141 void a4l_signal_sync(
struct a4l_sync * snc);
void rtdm_task_busy_sleep(nanosecs_rel_t delay)
Busy-wait a specified amount of time
Definition: drvlib.c:502
int64_t nanosecs_rel_t
RTDM type for representing relative intervals.
Definition: rtdm.h:49
Real-Time Driver Model for Xenomai, driver API header.
unsigned long long a4l_get_time(void)
Get the absolute time in nanoseconds.
Definition: rtdm_helpers.c:40
uint64_t nanosecs_abs_t
RTDM type for representing absolute dates.
Definition: rtdm.h:43