drivers: can: Update userspace handlers

This commit updates the userspace handlers to thle latest version.

Signed-off-by: Alexander Wachter <alexander.wachter@student.tugraz.at>
This commit is contained in:
Alexander Wachter 2019-02-07 17:57:43 +01:00 committed by Anas Nashif
commit 8757e780fc
2 changed files with 34 additions and 19 deletions

View file

@ -7,45 +7,59 @@
#include <syscall_handler.h>
#include <can.h>
_SYSCALL_HANDLER(can_configure, dev, mode, bitrate) {
Z_SYSCALL_HANDLER(can_configure, dev, mode, bitrate) {
_SYSCALL_OBJ(dev, K_OBJ_DRIVER_CAN);
Z_OOPS(Z_SYSCALL_DRIVER_CAN(dev, configure));
return _impl_can_configure((struct device *)dev, mode, bitrate);
return _impl_can_configure((struct device *)dev, (enum can_mode)mode,
(u32_t)bitrate);
}
_SYSCALL_HANDLER(can_send, dev, msg) {
_SYSCALL_OBJ(dev, K_OBJ_DRIVER_CAN);
Z_SYSCALL_HANDLER(can_send, dev, msg, timeout, callback_isr) {
/* We need to be able to read the data */
_SYSCALL_MEMORY_ARRAY_READ(msg->data, msg->dlc, sizeof(msg->data));
Z_OOPS(Z_SYSCALL_DRIVER_CAN(dev, send));
return _impl_can_send((struct device *)dev, (struct can_msg *)msg)
Z_OOPS(Z_SYSCALL_MEMORY_READ((struct can_msg *)msg,
sizeof(struct can_msg)));
Z_OOPS(Z_SYSCALL_MEMORY_READ(((struct can_msg *)msg)->data,
sizeof((struct can_msg *)msg)->data));
return _impl_can_send((struct device *)dev, (struct can_msg *)msg,
(s32_t)timeout, (can_tx_callback_t) callback_isr);
}
_SYSCALL_HANDLER(can_attach_msgq, dev, msgq, filter) {
_SYSCALL_OBJ(dev, K_OBJ_DRIVER_CAN);
Z_SYSCALL_HANDLER(can_attach_msgq, dev, msgq, filter) {
/* We need to be able to write the data */
_SYSCALL_MEMORY_WRITE(msgq, sizeof(msgq));
_SYSCALL_MEMORY_WRITE(msgq->buffer_start,
msgq->buffer_end - msgq->buffer_start);
Z_OOPS(Z_SYSCALL_DRIVER_CAN(dev, attach_msgq));
Z_OOPS(Z_SYSCALL_MEMORY_READ((struct can_filter *)filter,
sizeof(struct can_filter)));
Z_OOPS(Z_SYSCALL_MEMORY_WRITE((struct k_msgq *)msgq,
sizeof(struct k_msgq)));
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(((struct k_msgq *)msgq)->buffer_start,
((struct k_msgq *)msgq)->buffer_end -
((struct k_msgq *)msgq)->buffer_start));
return _impl_can_attach_msgq((struct device *)dev,
(struct k_msgq *)msgq,
(const struct can_filter *) filter);
}
_SYSCALL_HANDLER(can_attach_isr, dev, isr, filter) {
_SYSCALL_OBJ(dev, K_OBJ_DRIVER_CAN);
Z_SYSCALL_HANDLER(can_attach_isr, dev, isr, filter) {
Z_OOPS(Z_SYSCALL_DRIVER_CAN(dev, attach_isr));
Z_OOPS(Z_SYSCALL_MEMORY_READ((struct can_filter *)filter,
sizeof(struct can_filter)));
return _impl_can_attach_isr((struct device *)dev,
(can_rx_callback_t)isr,
(const struct can_filter *) filter);
}
_SYSCALL_HANDLER(can_detach, dev, filter_id) {
_SYSCALL_OBJ(dev, K_OBJ_DRIVER_CAN);
Z_SYSCALL_HANDLER(can_detach, dev, filter_id) {
return _impl_can_detach((struct device *)dev, (int)filter_id);
Z_OOPS(Z_SYSCALL_DRIVER_CAN(dev, detach));
_impl_can_detach((struct device *)dev, (int)filter_id);
}

View file

@ -51,6 +51,7 @@ subsystems = [
"sensor_driver_api",
"spi_driver_api",
"uart_driver_api",
"can_driver_api",
]