diff -r a5c4ccc02285 -r 5d21d80777a6 master/rtdm.c --- a/master/rtdm.c Fri Sep 14 23:37:19 2018 +0200 +++ b/master/rtdm.c Thu Sep 27 00:21:27 2018 +0200 @@ -51,6 +51,7 @@ void ec_rtdm_close(struct rtdm_fd *); int ec_rtdm_ioctl(struct rtdm_fd *, unsigned int, void __user *); +int ec_rtdm_mmap(struct rtdm_fd *fd, struct vm_area_struct *vma); /****************************************************************************/ @@ -66,7 +67,8 @@ .open = ec_rtdm_open, .close = ec_rtdm_close, .ioctl_rt = ec_rtdm_ioctl, - .ioctl_nrt = ec_rtdm_ioctl + .ioctl_nrt = ec_rtdm_ioctl, + .mmap = ec_rtdm_mmap }, }; @@ -211,25 +213,11 @@ /** Memory-map process data to user space. * - * \return Zero on success, otherwise a negative error code. - */ -int ec_rtdm_mmap( - ec_ioctl_context_t *ctx, /**< Context. */ - void **user_address /**< Userspace address. */ - ) -{ - int ret; - - ret = rtdm_mmap_to_user(rtdm_private_to_fd(ctx), - ctx->process_data, ctx->process_data_size, - PROT_READ | PROT_WRITE, - user_address, - NULL, NULL); - if (ret < 0) { - return ret; - } - - return 0; -} - -/****************************************************************************/ + */ +int ec_rtdm_mmap(struct rtdm_fd *fd, struct vm_area_struct *vma) +{ + ec_ioctl_context_t *ctx = (ec_ioctl_context_t *) rtdm_fd_to_private(fd); + return rtdm_mmap_vmem(vma, (void *)ctx->process_data); +} + +/****************************************************************************/