|
Xenomai
3.3
|
UDD device descriptor. More...

Data Structures | |
| struct | udd_reserved |
| Reserved to the UDD core. More... | |
Data Fields | |
| const char * | device_name |
| Name of the device managed by the mini-driver, appears automatically in the /dev/rtdm namespace upon creation. | |
| int | device_flags |
| Additional device flags (e.g. More... | |
| int | device_subclass |
| Subclass code of the device managed by the mini-driver (see RTDM_SUBCLASS_xxx definition in the Device Profiles). More... | |
| int | irq |
| IRQ number. More... | |
| struct udd_memregion | mem_regions [UDD_NR_MAPS] |
| Array of memory regions defined by the device. More... | |
| int(* | open )(struct rtdm_fd *fd, int oflags) |
| Ancillary open() handler, optional. More... | |
| void(* | close )(struct rtdm_fd *fd) |
| Ancillary close() handler, optional. More... | |
| int(* | ioctl )(struct rtdm_fd *fd, unsigned int request, void *arg) |
| Ancillary ioctl() handler, optional. More... | |
| int(* | mmap )(struct rtdm_fd *fd, struct vm_area_struct *vma) |
| Ancillary mmap() handler for the mapper device, optional. More... | |
| int(* | interrupt )(struct udd_device *udd) |
| More... | |
This descriptor defines the characteristics of a UDD-based mini-driver when registering via a call to udd_register_device().
| void(* udd_device::close) (struct rtdm_fd *fd) |
Ancillary close() handler, optional.
See rtdm_close_handler().
| int udd_device::device_flags |
Additional device flags (e.g.
RTDM_EXCLUSIVE) RTDM_NAMED_DEVICE may be omitted).
| int udd_device::device_subclass |
Subclass code of the device managed by the mini-driver (see RTDM_SUBCLASS_xxx definition in the Device Profiles).
The main class code is pre-set to RTDM_CLASS_UDD.
| int(* udd_device::interrupt) (struct udd_device *udd) |
Ancillary handler for receiving interrupts. This handler must be provided if the mini-driver hands over IRQ handling to the UDD core, by setting the irq field to a valid value, different from UDD_IRQ_CUSTOM and UDD_IRQ_NONE.
The ->interrupt() handler shall return one of the following status codes:
Once the ->interrupt() handler has returned, the UDD core notifies user-space Cobalt threads waiting for IRQ events (if any).
| int(* udd_device::ioctl) (struct rtdm_fd *fd, unsigned int request, void *arg) |
Ancillary ioctl() handler, optional.
See rtdm_ioctl_handler().
If this routine returns -ENOSYS, the default action implemented by the UDD core for the corresponding request will be applied, as if no ioctl handler had been defined.
| int udd_device::irq |
IRQ number.
If valid, the UDD core manages the corresponding interrupt line, installing a base handler. Otherwise, a special value can be passed for declaring unmanaged IRQs.
Referenced by udd_disable_irq(), udd_enable_irq(), and udd_unregister_device().
| struct udd_memregion udd_device::mem_regions[UDD_NR_MAPS] |
Array of memory regions defined by the device.
The array can be sparse, with some entries bearing the UDD_MEM_NONE type interleaved with valid ones. See the discussion about UDD memory regions.
| int(* udd_device::mmap) (struct rtdm_fd *fd, struct vm_area_struct *vma) |
Ancillary mmap() handler for the mapper device, optional.
See rtdm_mmap_handler(). The mapper device operates on a valid region defined in the mem_regions[] array. A pointer to the region can be obtained by a call to udd_get_region().
If this handler is NULL, the UDD core establishes the mapping automatically, depending on the memory type defined for the region.
| int(* udd_device::open) (struct rtdm_fd *fd, int oflags) |
Ancillary open() handler, optional.
See rtdm_open_handler().