--- 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);
+}
+
+/****************************************************************************/