Xenomai  3.0-rc3
udd.h
Go to the documentation of this file.
1 
19 #ifndef _COBALT_RTDM_UDD_H
20 #define _COBALT_RTDM_UDD_H
21 
22 #include <linux/list.h>
23 #include <rtdm/driver.h>
24 #include <rtdm/uapi/udd.h>
25 
63 #define UDD_IRQ_NONE 0
64 
69 #define UDD_IRQ_CUSTOM (-1)
70 
88 #define UDD_MEM_NONE 0
89 
94 #define UDD_MEM_PHYS 1
95 
99 #define UDD_MEM_LOGICAL 2
100 
105 #define UDD_MEM_VIRTUAL 3
106 
108 #define UDD_NR_MAPS 5
109 
165  const char *name;
171  unsigned long addr;
176  size_t len;
181  int type;
182 };
183 
191 struct udd_device {
196  const char *device_name;
209  struct {
214  int (*open)(struct rtdm_fd *fd, int oflags);
219  void (*close)(struct rtdm_fd *fd);
224  int (*ioctl)(struct rtdm_fd *fd,
225  unsigned int request, void *arg);
237  int (*mmap)(struct rtdm_fd *fd,
238  struct vm_area_struct *vma);
264  int (*interrupt)(struct udd_device *udd);
265  } ops;
272  int irq;
279  struct udd_memregion mem_regions[UDD_NR_MAPS];
281  struct udd_reserved {
282  rtdm_irq_t irqh;
283  atomic_t event;
284  struct udd_signotify signfy;
285  struct rtdm_event pulse;
286  struct rtdm_driver driver;
287  struct rtdm_device device;
288  struct rtdm_driver mapper_driver;
289  struct rtdm_device mapper;
290  char *mapper_name;
291  int nr_maps;
292  } __reserved;
293 };
294 
295 int udd_register_device(struct udd_device *udd);
296 
297 int udd_unregister_device(struct udd_device *udd);
298 
299 struct udd_device *udd_get_device(struct rtdm_fd *fd);
300 
301 void udd_notify_event(struct udd_device *udd);
302 
303 void udd_post_irq_enable(int irq);
304 
305 void udd_post_irq_disable(int irq);
306 
309 #endif /* !_COBALT_RTDM_UDD_H */
int udd_register_device(struct udd_device *udd)
Register a UDD device.
Definition: udd.c:335
const char * name
Name of the region (informational but required)
Definition: udd.h:165
int(* open)(struct rtdm_fd *fd, int oflags)
Ancillary open() handler, optional.
Definition: udd.h:214
const char * device_name
Name of the device managed by the mini-driver, appears automatically in the /dev/rtdm namespace upon ...
Definition: udd.h:196
unsigned long addr
Start address of the region.
Definition: udd.h:171
Reserved to the UDD core.
Definition: udd.h:281
This file is part of the Xenomai project.
Definition: udd.h:163
struct udd_device * udd_get_device(struct rtdm_fd *fd)
RTDM file descriptor to target UDD device.
Definition: udd.c:585
size_t len
Length (in bytes) of the region.
Definition: udd.h:176
Real-Time Driver Model for Xenomai, driver API header.
int(* ioctl)(struct rtdm_fd *fd, unsigned int request, void *arg)
Ancillary ioctl() handler, optional.
Definition: udd.h:224
void udd_notify_event(struct udd_device *udd)
Notify an IRQ event for an unmanaged interrupt.
Definition: udd.c:469
Definition: udd.h:191
int irq
IRQ number.
Definition: udd.h:272
void udd_post_irq_disable(int irq)
Post a request for disabling an IRQ line.
Definition: udd.c:563
int(* mmap)(struct rtdm_fd *fd, struct vm_area_struct *vma)
Ancillary mmap() handler for the mapper device, optional.
Definition: udd.h:237
int device_subclass
Subclass code of the device managed by the mini-driver (see RTDM_SUBCLASS_xxx definition in the Devic...
Definition: udd.h:208
int(* interrupt)(struct udd_device *udd)
Definition: udd.h:264
struct udd_memregion mem_regions[UDD_NR_MAPS]
Array of memory regions defined by the device.
Definition: udd.h:279
int device_flags
Additional device flags (e.g.
Definition: udd.h:201
Copyright © 2011 Gilles Chanteperdrix gilles.chanteperdrix@xenomai.org.
Definition: atomic.h:24
int udd_unregister_device(struct udd_device *udd)
Unregister a UDD device.
Definition: udd.c:425
void(* close)(struct rtdm_fd *fd)
Ancillary close() handler, optional.
Definition: udd.h:219
int type
Type of the region.
Definition: udd.h:181
void udd_post_irq_enable(int irq)
Post a request for enabling an IRQ line.
Definition: udd.c:541
UDD event notification descriptor.
Definition: udd.h:44
RTDM device.
Definition: driver.h:321
RTDM driver.
Definition: driver.h:245