Data Structures | |
| struct | rtdm_operations |
| Device operations. More... | |
| struct | rtdm_dev_context |
| Device context. More... | |
| struct | rtdm_device |
| RTDM device. More... | |
Device Flags | |
| Static flags describing a RTDM device | |
| #define | RTDM_EXCLUSIVE 0x0001 |
| If set, only a single instance of the device can be requested by an application. | |
| #define | RTDM_NAMED_DEVICE 0x0010 |
| If set, the device is addressed via a clear-text name. | |
| #define | RTDM_PROTOCOL_DEVICE 0x0020 |
| If set, the device is addressed via a combination of protocol ID and socket type. | |
| #define | RTDM_DEVICE_TYPE_MASK 0x00F0 |
| Mask selecting the device type. | |
Context Flags | |
| Dynamic flags describing the state of an open RTDM device (bit numbers) | |
| #define | RTDM_CREATED_IN_NRT 0 |
| Set by RTDM if the device instance was created in non-real-time context. | |
| #define | RTDM_CLOSING 1 |
| Set by RTDM when the device is being closed. | |
| #define | RTDM_FORCED_CLOSING 2 |
| Set by RTDM if the device has to be closed regardless of possible pending locks held by other users. | |
| #define | RTDM_USER_CONTEXT_FLAG 8 |
| Lowest bit number the driver developer can use freely. | |
Driver Versioning | |
| Current revisions of RTDM structures, encoding of driver versions. See API Versioning for the interface revision. | |
| #define | RTDM_DEVICE_STRUCT_VER 3 |
| Version of struct rtdm_device. | |
| #define | RTDM_CONTEXT_STRUCT_VER 3 |
| Version of struct rtdm_dev_context. | |
| #define | RTDM_SECURE_DEVICE 0x80000000 |
| Flag indicating a secure variant of RTDM (not supported here). | |
| #define | RTDM_DRIVER_VER(major, minor, patch) (((major & 0xFF) << 16) | ((minor & 0xFF) << 8) | (patch & 0xFF)) |
| Version code constructor for driver revisions. | |
| #define | RTDM_DRIVER_MAJOR_VER(ver) (((ver) >> 16) & 0xFF) |
| Get major version number from driver revision code. | |
| #define | RTDM_DRIVER_MINOR_VER(ver) (((ver) >> 8) & 0xFF) |
| Get minor version number from driver revision code. | |
| #define | RTDM_DRIVER_PATCH_VER(ver) ((ver) & 0xFF) |
| Get patch version number from driver revision code. | |
Operation Handler Prototypes | |
| typedef int(* | rtdm_open_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, int oflag) |
| Named device open handler. | |
| typedef int(* | rtdm_socket_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, int protocol) |
| Socket creation handler for protocol devices. | |
| typedef int(* | rtdm_close_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info) |
| Close handler. | |
| typedef int(* | rtdm_ioctl_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, int request, void *arg) |
| IOCTL handler. | |
| typedef ssize_t(* | rtdm_read_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, void *buf, size_t nbyte) |
| Read handler. | |
| typedef ssize_t(* | rtdm_write_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, const void *buf, size_t nbyte) |
| Write handler. | |
| typedef ssize_t(* | rtdm_recvmsg_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, struct msghdr *msg, int flags) |
| Receive message handler. | |
| typedef ssize_t(* | rtdm_sendmsg_handler_t )(struct rtdm_dev_context *context, rtdm_user_info_t *user_info, const struct msghdr *msg, int flags) |
| Transmit message handler. | |
Functions | |
| int | rtdm_dev_register (struct rtdm_device *device) |
| Register a RTDM device. | |
| int | rtdm_dev_unregister (struct rtdm_device *device, unsigned int poll_delay) |
| Unregisters a RTDM device. | |
|
|
Close handler.
|
|
|
IOCTL handler.
|
|
|
Named device open handler.
|
|
|
Read handler.
|
|
|
Receive message handler.
|
|
|
Transmit message handler.
|
|
|
Socket creation handler for protocol devices.
|
|
|
Write handler.
|
|
|
Register a RTDM device.
Environments: This service can be called from:
Rescheduling: never. |
|
||||||||||||
|
Unregisters a RTDM device.
Environments: This service can be called from:
Rescheduling: never. |
1.4.6