|
Lely core libraries 2.3.5
|
The implementation of a virtual CAN channel. More...

Data Fields | |
| const struct io_dev_vtbl * | dev_vptr |
| A pointer to the virtual table for the I/O device interface. | |
| const struct io_can_chan_vtbl * | chan_vptr |
| A pointer to the virtual table for the CAN channel interface. | |
| struct io_svc | svc |
| The I/O service representing the channel. | |
| io_ctx_t * | ctx |
| A pointer to the I/O context with which the channel is registered. | |
| ev_exec_t * | exec |
| A pointer to the executor used to execute all I/O tasks. | |
| struct ev_task | read_task |
| The task responsible for initiating read operations. | |
| struct ev_task | write_task |
| The task responsible for initiating write operations. | |
| struct spscring | rxring |
| The ring buffer used to control the receive queue. | |
| struct io_vcan_frame * | rxbuf |
| The receive queue. | |
| mtx_t | mtx |
| The mutex protecting the channel and the queues of pending operations. | |
| cnd_t | cond |
| The condition variable used to wake up blocked synchronous read operations. | |
| io_can_ctrl_t * | ctrl |
| A pointer to the virtual CAN controller with which this channel is registered. | |
| struct slnode | node |
| The node of the channel in the list of the virtual CAN controller. | |
| unsigned | shutdown: 1 |
| A flag indicating whether the I/O service has been shut down. | |
| unsigned | stopped: 1 |
| A flag indicating the virtual CAN controller is stopped. | |
| unsigned | read_posted: 1 |
| A flag indicating whether read_task has been posted to exec. | |
| unsigned | write_posted: 1 |
| A flag indicating whether write_task has been posted to exec. | |
| struct sllist | read_queue |
| The queue containing pending read operations. | |
| struct sllist | write_queue |
| The queue containing pending write operations. | |
| struct ev_task * | current_write |
| The write operation currently being executed. | |
| struct slnode io_vcan_chan::node |
The node of the channel in the list of the virtual CAN controller.
node is protected by the mutex in io_vcan_ctrl.