Lely core libraries 2.3.4
|
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.