master/rtdm.c
branchstable-1.5
changeset 2712 5d21d80777a6
parent 2707 245d8592cfdc
child 2713 2e2f57fd2131
--- 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);
+}
+
+/****************************************************************************/