Module: xenomai-gch Branch: for-forge-fd-rework Commit: 3ab8c031b0e9938c42bffa95cad9cca5c2a781e0 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=3ab8c031b0e9938c42bffa95cad9cca5c2a781e0
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Sat May 17 21:15:58 2014 +0200 drivers/serial: adapt after RTDM API changes Note: rt_imx_serial and mpc52xx were not compiled. rt_imx_serial does not compile with either Linux 3.10 or Linux 3.14. --- kernel/drivers/serial/16550A.c | 87 +++++++++++++++------------------- kernel/drivers/serial/Kconfig | 2 +- kernel/drivers/serial/mpc52xx_uart.c | 75 +++++++++++++---------------- kernel/drivers/serial/rt_imx_uart.c | 77 ++++++++++++++---------------- 4 files changed, 108 insertions(+), 133 deletions(-) diff --git a/kernel/drivers/serial/16550A.c b/kernel/drivers/serial/16550A.c index 8ee1c21..693f878 100644 --- a/kernel/drivers/serial/16550A.c +++ b/kernel/drivers/serial/16550A.c @@ -312,9 +312,7 @@ static int rt_16550_set_config(struct rt_16550_context *ctx, rtdm_lock_get_irqsave(&ctx->lock, lock_ctx); if (config->config_mask & RTSER_SET_BAUD) { - int dev_id = container_of(((void *)ctx), - struct rtdm_dev_context, - dev_private)->device->device_id; + int dev_id = rtdm_fd_device(rtdm_private_to_fd(ctx))->device_id; int baud_div; ctx->config.baud_rate = config->baud_rate; @@ -439,16 +437,15 @@ void rt_16550_cleanup_ctx(struct rt_16550_context *ctx) rtdm_mutex_destroy(&ctx->out_lock); } -int rt_16550_open(struct rtdm_dev_context *context, - rtdm_user_info_t * user_info, int oflags) +int rt_16550_open(struct rtdm_fd *fd, int oflags) { struct rt_16550_context *ctx; - int dev_id = context->device->device_id; + int dev_id = rtdm_fd_device(fd)->device_id; int err; uint64_t *dummy; rtdm_lockctx_t lock_ctx; - ctx = (struct rt_16550_context *)context->dev_private; + ctx = rtdm_fd_to_private(fd); /* IPC initialisation - cannot fail with used parameters */ rtdm_lock_init(&ctx->lock); @@ -480,8 +477,8 @@ int rt_16550_open(struct rtdm_dev_context *context, rt_16550_set_config(ctx, &default_config, &dummy); err = rtdm_irq_request(&ctx->irq_handle, irq[dev_id], - rt_16550_interrupt, irqtype[dev_id], - context->device->proc_name, ctx); + rt_16550_interrupt, irqtype[dev_id], + rtdm_fd_device(fd)->proc_name, ctx); if (err) { /* reset DTR and RTS */ rt_16550_reg_out(rt_16550_io_mode_from_ctx(ctx), ctx->base_addr, @@ -504,8 +501,7 @@ int rt_16550_open(struct rtdm_dev_context *context, return 0; } -int rt_16550_close(struct rtdm_dev_context *context, - rtdm_user_info_t * user_info) +void rt_16550_close(struct rtdm_fd *fd) { struct rt_16550_context *ctx; unsigned long base; @@ -513,7 +509,7 @@ int rt_16550_close(struct rtdm_dev_context *context, uint64_t *in_history; rtdm_lockctx_t lock_ctx; - ctx = (struct rt_16550_context *)context->dev_private; + ctx = rtdm_fd_to_private(fd); base = ctx->base_addr; mode = rt_16550_io_mode_from_ctx(ctx); @@ -539,13 +535,9 @@ int rt_16550_close(struct rtdm_dev_context *context, rt_16550_cleanup_ctx(ctx); kfree(in_history); - - return 0; } -int rt_16550_ioctl(struct rtdm_dev_context *context, - rtdm_user_info_t * user_info, - unsigned int request, void *arg) +int rt_16550_ioctl(struct rtdm_fd *fd, unsigned int request, void *arg) { rtdm_lockctx_t lock_ctx; struct rt_16550_context *ctx; @@ -553,15 +545,15 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, unsigned long base; int mode; - ctx = (struct rt_16550_context *)context->dev_private; + ctx = rtdm_fd_to_private(fd); base = ctx->base_addr; mode = rt_16550_io_mode_from_ctx(ctx); switch (request) { case RTSER_RTIOC_GET_CONFIG: - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &ctx->config, sizeof(struct rtser_config)); @@ -577,9 +569,9 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, config = (struct rtser_config *)arg; - if (user_info) { + if (rtdm_fd_is_user(fd)) { err = - rtdm_safe_copy_from_user(user_info, &config_buf, + rtdm_safe_copy_from_user(fd, &config_buf, arg, sizeof(struct rtser_config)); @@ -591,8 +583,8 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, if ((config->config_mask & RTSER_SET_BAUD) && (config->baud_rate > - baud_base[context->device->device_id] || - config->baud_rate <= 0)) + baud_base[rtdm_fd_device(fd)->device_id] || + config->baud_rate <= 0)) /* invalid baudrate for this port */ return -EINVAL; @@ -631,7 +623,7 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) { + if (rtdm_fd_is_user(fd)) { struct rtser_status status_buf; status_buf.line_status = @@ -640,7 +632,7 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, rt_16550_reg_in(mode, base, MSR); err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &status_buf, sizeof(struct rtser_status)); @@ -654,9 +646,9 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, } case RTSER_RTIOC_GET_CONTROL: - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &ctx->mcr_status, sizeof(int)); else @@ -725,9 +717,9 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, &ev, + rtdm_safe_copy_to_user(fd, arg, &ev, sizeof(struct rtser_event)); else @@ -788,8 +780,7 @@ int rt_16550_ioctl(struct rtdm_dev_context *context, return err; } -ssize_t rt_16550_read(struct rtdm_dev_context * context, - rtdm_user_info_t * user_info, void *buf, size_t nbyte) +ssize_t rt_16550_read(struct rtdm_fd *fd, void *buf, size_t nbyte) { struct rt_16550_context *ctx; rtdm_lockctx_t lock_ctx; @@ -806,10 +797,10 @@ ssize_t rt_16550_read(struct rtdm_dev_context * context, if (nbyte == 0) return 0; - if (user_info && !rtdm_rw_user_ok(user_info, buf, nbyte)) + if (rtdm_fd_is_user(fd) && !rtdm_rw_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_16550_context *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -857,9 +848,9 @@ ssize_t rt_16550_read(struct rtdm_dev_context * context, separately. */ subblock = IN_BUFFER_SIZE - in_pos; - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_to_user - (user_info, out_pos, + (fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -876,8 +867,8 @@ ssize_t rt_16550_read(struct rtdm_dev_context * context, in_pos = 0; } - if (user_info) { - if (rtdm_copy_to_user(user_info, out_pos, + if (rtdm_fd_is_user(fd)) { + if (rtdm_copy_to_user(fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -952,9 +943,7 @@ break_unlocked: return ret; } -ssize_t rt_16550_write(struct rtdm_dev_context * context, - rtdm_user_info_t * user_info, const void *buf, - size_t nbyte) +ssize_t rt_16550_write(struct rtdm_fd *fd, const void *buf, size_t nbyte) { struct rt_16550_context *ctx; rtdm_lockctx_t lock_ctx; @@ -970,10 +959,10 @@ ssize_t rt_16550_write(struct rtdm_dev_context * context, if (nbyte == 0) return 0; - if (user_info && !rtdm_read_user_ok(user_info, buf, nbyte)) + if (rtdm_fd_is_user(fd) && !rtdm_read_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_16550_context *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -1000,9 +989,9 @@ ssize_t rt_16550_write(struct rtdm_dev_context * context, end separately. */ subblock = OUT_BUFFER_SIZE - out_pos; - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_from_user - (user_info, + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; @@ -1019,9 +1008,9 @@ ssize_t rt_16550_write(struct rtdm_dev_context * context, out_pos = 0; } - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_from_user - (user_info, &ctx->out_buf[out_pos], + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; break; @@ -1085,10 +1074,10 @@ static const struct rtdm_device __initdata device_tmpl = { .context_size = sizeof(struct rt_16550_context), .device_name = "", - .open_nrt = rt_16550_open, + .open = rt_16550_open, .ops = { - .close_nrt = rt_16550_close, + .close = rt_16550_close, .ioctl_rt = rt_16550_ioctl, .ioctl_nrt = rt_16550_ioctl, diff --git a/kernel/drivers/serial/Kconfig b/kernel/drivers/serial/Kconfig index e495911..e43fa74 100644 --- a/kernel/drivers/serial/Kconfig +++ b/kernel/drivers/serial/Kconfig @@ -69,7 +69,7 @@ config XENO_DRIVERS_MPC52XX_UART Real-time UART driver for the PSC on the MPC5200 processor. config XENO_DRIVERS_IMX_UART - depends on XENO_SKIN_RTDM && (ARCH_IMX || ARCH_MXC) + depends on ARCH_IMX || ARCH_MXC tristate "RT IMX UART driver" select RATIONAL help diff --git a/kernel/drivers/serial/mpc52xx_uart.c b/kernel/drivers/serial/mpc52xx_uart.c index 9d2bdfe..982d728 100644 --- a/kernel/drivers/serial/mpc52xx_uart.c +++ b/kernel/drivers/serial/mpc52xx_uart.c @@ -637,16 +637,15 @@ void rt_mpc52xx_uart_cleanup_ctx(struct rt_mpc52xx_uart_ctx *ctx) rtdm_mutex_destroy(&ctx->out_lock); } -static int rt_mpc52xx_uart_open(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, int oflags) +static int rt_mpc52xx_uart_open(struct rtdm_fd *fd, int oflags) { struct rt_mpc52xx_uart_ctx *ctx; rtdm_lockctx_t lock_ctx; uint64_t *dummy; int err; - ctx = (struct rt_mpc52xx_uart_ctx *)context->dev_private; - ctx->port = (struct rt_mpc52xx_uart_port *)context->device->device_data; + ctx = rtdm_fd_to_private(fd); + ctx->port = (struct rt_mpc52xx_uart_port *)rtdm_fd_device(fd)->device_data; /* IPC initialisation - cannot fail with used parameters */ rtdm_lock_init(&ctx->lock); @@ -692,7 +691,7 @@ static int rt_mpc52xx_uart_open(struct rtdm_dev_context *context, err = rtdm_irq_request(&ctx->irq_handle, ctx->port->irq, rt_mpc52xx_uart_interrupt, 0, - context->device->proc_name, ctx); + rtdm_fd_device(fd)->proc_name, ctx); if (err) { psc_set_mcr(ctx, 0); rt_mpc52xx_uart_cleanup_ctx(ctx); @@ -703,14 +702,13 @@ static int rt_mpc52xx_uart_open(struct rtdm_dev_context *context, return 0; } -static int rt_mpc52xx_uart_close(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info) +static void rt_mpc52xx_uart_close(struct rtdm_fd *fd) { struct rt_mpc52xx_uart_ctx *ctx; uint64_t *in_history; rtdm_lockctx_t lock_ctx; - ctx = (struct rt_mpc52xx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_lock_get_irqsave(&ctx->lock, lock_ctx); @@ -729,24 +727,21 @@ static int rt_mpc52xx_uart_close(struct rtdm_dev_context *context, rt_mpc52xx_uart_cleanup_ctx(ctx); kfree(in_history); - - return 0; } -static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, +static int rt_mpc52xx_uart_ioctl(struct rtdm_fd *fd, unsigned int request, void *arg) { rtdm_lockctx_t lock_ctx; struct rt_mpc52xx_uart_ctx *ctx; int err = 0; - ctx = (struct rt_mpc52xx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); switch (request) { case RTSER_RTIOC_GET_CONFIG: - if (user_info) - err = rtdm_safe_copy_to_user(user_info, arg, + if (rtdm_is_user(fd)) + err = rtdm_safe_copy_to_user(fd, arg, &ctx->config, sizeof(struct rtser_config)); @@ -761,8 +756,8 @@ static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, config = (struct rtser_config *)arg; - if (user_info) { - err = rtdm_safe_copy_from_user(user_info, &config_buf, + if (rtdm_is_user(fd)) { + err = rtdm_safe_copy_from_user(fd, &config_buf, arg, sizeof(struct rtser_config)); @@ -811,13 +806,13 @@ static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) { + if (rtdm_is_user(fd)) { struct rtser_status status_buf; status_buf.line_status = status; status_buf.modem_status = psc_get_msr(ctx); - err = rtdm_safe_copy_to_user(user_info, arg, + err = rtdm_safe_copy_to_user(fd, arg, &status_buf, sizeof(struct rtser_status)); @@ -830,8 +825,8 @@ static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, } case RTSER_RTIOC_GET_CONTROL: - if (user_info) - err = rtdm_safe_copy_to_user(user_info, arg, + if (rtdm_is_user(fd)) + err = rtdm_safe_copy_to_user(fd, arg, &ctx->mcr_status, sizeof(int)); else @@ -894,9 +889,9 @@ static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) + if (rtdm_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, &ev, + rtdm_safe_copy_to_user(fd, arg, &ev, sizeof(struct rtser_event)); else @@ -956,8 +951,7 @@ static int rt_mpc52xx_uart_ioctl(struct rtdm_dev_context *context, return err; } -static ssize_t rt_mpc52xx_uart_read(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, void *buf, +static ssize_t rt_mpc52xx_uart_read(struct rtdm_fd *fd, void *buf, size_t nbyte) { struct rt_mpc52xx_uart_ctx *ctx; @@ -975,10 +969,10 @@ static ssize_t rt_mpc52xx_uart_read(struct rtdm_dev_context *context, if (nbyte == 0) return 0; - if (user_info && !rtdm_rw_user_ok(user_info, buf, nbyte)) + if (rtdm_is_user(fd) && !rtdm_rw_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_mpc52xx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -1018,9 +1012,9 @@ static ssize_t rt_mpc52xx_uart_read(struct rtdm_dev_context *context, separately. */ subblock = IN_BUFFER_SIZE - in_pos; - if (user_info) { + if (rtdm_is_user(fd)) { if (rtdm_copy_to_user - (user_info, out_pos, + (fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -1037,8 +1031,8 @@ static ssize_t rt_mpc52xx_uart_read(struct rtdm_dev_context *context, in_pos = 0; } - if (user_info) { - if (rtdm_copy_to_user(user_info, out_pos, + if (rtdm_is_user(fd)) { + if (rtdm_copy_to_user(fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -1113,8 +1107,7 @@ break_unlocked: return ret; } -static ssize_t rt_mpc52xx_uart_write(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, +static ssize_t rt_mpc52xx_uart_write(struct rtdm_fd *fd, const void *buf, size_t nbyte) { @@ -1132,10 +1125,10 @@ static ssize_t rt_mpc52xx_uart_write(struct rtdm_dev_context *context, if (nbyte == 0) return 0; - if (user_info && !rtdm_read_user_ok(user_info, buf, nbyte)) + if (rtdm_is_user(fd) && !rtdm_read_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_mpc52xx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -1162,9 +1155,9 @@ static ssize_t rt_mpc52xx_uart_write(struct rtdm_dev_context *context, end separately. */ subblock = OUT_BUFFER_SIZE - out_pos; - if (user_info) { + if (rtdm_is_user(fd)) { if (rtdm_copy_from_user - (user_info, + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; @@ -1181,9 +1174,9 @@ static ssize_t rt_mpc52xx_uart_write(struct rtdm_dev_context *context, out_pos = 0; } - if (user_info) { + if (rtdm_is_user(fd)) { if (rtdm_copy_from_user - (user_info, &ctx->out_buf[out_pos], + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; break; @@ -1246,10 +1239,10 @@ static const struct rtdm_device device_tmpl = { .context_size = sizeof(struct rt_mpc52xx_uart_ctx), .device_name = "", - .open_nrt = rt_mpc52xx_uart_open, + .open = rt_mpc52xx_uart_open, .ops = { - .close_nrt = rt_mpc52xx_uart_close, + .close = rt_mpc52xx_uart_close, .ioctl_rt = rt_mpc52xx_uart_ioctl, .ioctl_nrt = rt_mpc52xx_uart_ioctl, diff --git a/kernel/drivers/serial/rt_imx_uart.c b/kernel/drivers/serial/rt_imx_uart.c index d4e453a..2f9a8f1 100644 --- a/kernel/drivers/serial/rt_imx_uart.c +++ b/kernel/drivers/serial/rt_imx_uart.c @@ -738,8 +738,7 @@ static int rt_imx_uart_setup_ufcr(struct rt_imx_uart_port *port) /* half the RX buffer size */ #define CTSTL 16 -static int rt_imx_uart_open(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, int oflags) +static int rt_imx_uart_open(struct rtdm_fd *fd, int oflags) { struct rt_imx_uart_ctx *ctx; struct rt_imx_uart_port *port; @@ -748,8 +747,8 @@ static int rt_imx_uart_open(struct rtdm_dev_context *context, int retval; uint64_t *dummy; - ctx = (struct rt_imx_uart_ctx *)context->dev_private; - ctx->port = (struct rt_imx_uart_port *)context->device->device_data; + ctx = rtdm_fd_to_private(fd); + ctx->port = (struct rt_imx_uart_port *)rtdm_fd_device(fd)->device_data; port = ctx->port; @@ -793,7 +792,7 @@ static int rt_imx_uart_open(struct rtdm_dev_context *context, retval = rtdm_irq_request(&ctx->irq_handle, port->irq, rt_imx_uart_int, 0, - context->device->proc_name, ctx); + rtdm_fd_device(fd)->proc_name, ctx); if (retval) return retval; @@ -822,15 +821,14 @@ static int rt_imx_uart_open(struct rtdm_dev_context *context, return 0; } -int rt_imx_uart_close(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info) +void rt_imx_uart_close(struct rtdm_fd *fd) { struct rt_imx_uart_ctx *ctx; uint64_t *in_history; rtdm_lockctx_t lock_ctx; unsigned long temp; - ctx = (struct rt_imx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_lock_get_irqsave(&ctx->lock, lock_ctx); @@ -855,25 +853,22 @@ int rt_imx_uart_close(struct rtdm_dev_context *context, if (in_history) kfree(in_history); - - return 0; } -static int rt_imx_uart_ioctl(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, +static int rt_imx_uart_ioctl(struct rtdm_fd *fd, unsigned int request, void *arg) { rtdm_lockctx_t lock_ctx; struct rt_imx_uart_ctx *ctx; int err = 0; - ctx = (struct rt_imx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); switch (request) { case RTSER_RTIOC_GET_CONFIG: - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &ctx->config, sizeof(struct rtser_config)); else @@ -888,9 +883,9 @@ static int rt_imx_uart_ioctl(struct rtdm_dev_context *context, config = (struct rtser_config *)arg; - if (user_info) { + if (rtdm_fd_is_user(fd)) { err = - rtdm_safe_copy_from_user(user_info, &config_buf, + rtdm_safe_copy_from_user(fd, &config_buf, arg, sizeof(struct rtser_config)); @@ -942,14 +937,14 @@ static int rt_imx_uart_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) { + if (rtdm_fd_is_user(fd)) { struct rtser_status status_buf; status_buf.line_status = status; status_buf.modem_status = msr; err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &status_buf, sizeof(struct rtser_status)); @@ -961,9 +956,9 @@ static int rt_imx_uart_ioctl(struct rtdm_dev_context *context, } case RTSER_RTIOC_GET_CONTROL: - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, + rtdm_safe_copy_to_user(fd, arg, &ctx->mcr_status, sizeof(int)); else @@ -1034,9 +1029,9 @@ static int rt_imx_uart_ioctl(struct rtdm_dev_context *context, rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx); - if (user_info) + if (rtdm_fd_is_user(fd)) err = - rtdm_safe_copy_to_user(user_info, arg, &ev, + rtdm_safe_copy_to_user(fd, arg, &ev, sizeof(struct rtser_event)); else @@ -1091,8 +1086,7 @@ wait_unlock_out: return err; } -ssize_t rt_imx_uart_read(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, void *buf, size_t nbyte) +ssize_t rt_imx_uart_read(struct rtdm_fd *fd, void *buf, size_t nbyte) { struct rt_imx_uart_ctx *ctx; rtdm_lockctx_t lock_ctx; @@ -1109,10 +1103,10 @@ ssize_t rt_imx_uart_read(struct rtdm_dev_context *context, if (nbyte == 0) return 0; - if (user_info && !rtdm_rw_user_ok(user_info, buf, nbyte)) + if (rtdm_fd_is_user(fd) && !rtdm_rw_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_imx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -1152,9 +1146,9 @@ ssize_t rt_imx_uart_read(struct rtdm_dev_context *context, separately. */ subblock = IN_BUFFER_SIZE - in_pos; - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_to_user - (user_info, out_pos, + (fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -1171,8 +1165,8 @@ ssize_t rt_imx_uart_read(struct rtdm_dev_context *context, in_pos = 0; } - if (user_info) { - if (rtdm_copy_to_user(user_info, out_pos, + if (rtdm_fd_is_user(fd)) { + if (rtdm_copy_to_user(fd, out_pos, &ctx->in_buf[in_pos], subblock) != 0) { ret = -EFAULT; @@ -1248,9 +1242,8 @@ break_unlocked: return ret; } -static ssize_t rt_imx_uart_write(struct rtdm_dev_context *context, - rtdm_user_info_t *user_info, const void *buf, - size_t nbyte) +static ssize_t rt_imx_uart_write(struct rtdm_fd *fd, const void *buf, + size_t nbyte) { struct rt_imx_uart_ctx *ctx; rtdm_lockctx_t lock_ctx; @@ -1266,10 +1259,10 @@ static ssize_t rt_imx_uart_write(struct rtdm_dev_context *context, if (nbyte == 0) return 0; - if (user_info && !rtdm_read_user_ok(user_info, buf, nbyte)) + if (rtdm_fd_is_user(fd) && !rtdm_read_user_ok(fd, buf, nbyte)) return -EFAULT; - ctx = (struct rt_imx_uart_ctx *)context->dev_private; + ctx = rtdm_fd_to_private(fd); rtdm_toseq_init(&timeout_seq, ctx->config.rx_timeout); @@ -1296,9 +1289,9 @@ static ssize_t rt_imx_uart_write(struct rtdm_dev_context *context, end separately. */ subblock = OUT_BUFFER_SIZE - out_pos; - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_from_user - (user_info, + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; @@ -1315,9 +1308,9 @@ static ssize_t rt_imx_uart_write(struct rtdm_dev_context *context, out_pos = 0; } - if (user_info) { + if (rtdm_fd_is_user(fd)) { if (rtdm_copy_from_user - (user_info, &ctx->out_buf[out_pos], + (fd, &ctx->out_buf[out_pos], in_pos, subblock) != 0) { ret = -EFAULT; break; @@ -1377,10 +1370,10 @@ static const struct rtdm_device __initdata device_tmpl = { .context_size = sizeof(struct rt_imx_uart_ctx), .device_name = "", - .open_nrt = rt_imx_uart_open, + .open = rt_imx_uart_open, .ops = { - .close_nrt = rt_imx_uart_close, + .close = rt_imx_uart_close, .ioctl_rt = rt_imx_uart_ioctl, .ioctl_nrt = rt_imx_uart_ioctl, .read_rt = rt_imx_uart_read, _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git