[Xenomai-git] Gilles Chanteperdrix : drivers/ipc: adapt BUFP after RTDM changes

2014-05-16 Thread git repository hosting
Module: xenomai-forge
Branch: master
Commit: 53d61be0b6566e9981107b9327042c6f1056cbd2
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=53d61be0b6566e9981107b9327042c6f1056cbd2

Author: Gilles Chanteperdrix 
Date:   Tue Feb  4 21:43:40 2014 +0100

drivers/ipc: adapt BUFP after RTDM changes

---

 kernel/drivers/ipc/bufp.c |  116 -
 1 file changed, 61 insertions(+), 55 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 99e1a1e..3216aef 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -105,7 +105,7 @@ static struct xnpnode_link __bufp_pnode = {
 #endif /* !CONFIG_XENO_OPT_VFILE */
 
 static int bufp_socket(struct rtipc_private *priv,
-  rtdm_user_info_t *user_info)
+  struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -131,16 +131,21 @@ static int bufp_socket(struct rtipc_private *priv,
return 0;
 }
 
-static int bufp_close(struct rtipc_private *priv,
- rtdm_user_info_t *user_info)
+static void bufp_close(struct rtipc_private *priv,
+   struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
rtdm_event_destroy(&sk->i_event);
rtdm_event_destroy(&sk->o_event);
 
-   if (sk->name.sipc_port > -1)
+   if (sk->name.sipc_port > -1) {
+   spl_t s;
+
+   cobalt_atomic_enter(s);
xnmap_remove(portmap, sk->name.sipc_port);
+   cobalt_atomic_leave(s);
+   }
 
if (sk->handle)
xnregistry_remove(sk->handle);
@@ -149,8 +154,6 @@ static int bufp_close(struct rtipc_private *priv,
free_pages_exact(sk->bufmem, sk->bufsz);
 
kfree(sk);
-
-   return 0;
 }
 
 static ssize_t __bufp_readbuf(struct bufp_socket *sk,
@@ -282,7 +285,7 @@ out:
 }
 
 static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct rtdm_fd *context,
  struct iovec *iov, int iovlen, int flags,
  struct sockaddr_ipc *saddr)
 {
@@ -313,7 +316,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
if (iov[nvec].iov_len == 0)
continue;
vlen = wrlen >= iov[nvec].iov_len ? iov[nvec].iov_len : wrlen;
-   if (user_info) {
+   if (rtdm_context_user_p(context)) {
xnbufd_map_uread(&bufd, iov[nvec].iov_base, vlen);
ret = __bufp_readbuf(sk, &bufd, flags);
xnbufd_unmap_uread(&bufd);
@@ -344,7 +347,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_recvmsg(struct rtipc_private *priv,
-   rtdm_user_info_t *user_info,
+   struct rtdm_fd *context,
struct msghdr *msg, int flags)
 {
struct iovec iov[RTIPC_IOV_MAX];
@@ -364,23 +367,23 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(user_info, iov, msg->msg_iov,
+   if (rtipc_get_arg(context, iov, msg->msg_iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
-   ret = __bufp_recvmsg(priv, user_info,
+   ret = __bufp_recvmsg(priv, context,
 iov, msg->msg_iovlen, flags, &saddr);
if (ret <= 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(user_info, msg->msg_iov, iov,
+   if (rtipc_put_arg(context, msg->msg_iov, iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
/* Copy the source address if required. */
if (msg->msg_name) {
-   if (rtipc_put_arg(user_info, msg->msg_name,
+   if (rtipc_put_arg(context, msg->msg_name,
  &saddr, sizeof(saddr)))
return -EFAULT;
msg->msg_namelen = sizeof(struct sockaddr_ipc);
@@ -390,11 +393,11 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_read(struct rtipc_private *priv,
-rtdm_user_info_t *user_info,
+struct rtdm_fd *context,
 void *buf, size_t len)
 {
struct iovec iov = { .iov_base = buf, .iov_len = len };
-   return __bufp_recvmsg(priv, user_info, &iov, 1, 0, NULL);
+   return __bufp_recvmsg(priv, context, &iov, 1, 0, NULL);
 }
 
 static ssize_t __bufp_writebuf(struct bufp_socket *rsk,
@@ -514,26 +517,26 @@ out:
 }
 
 static ssize_t __bufp_sendmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct rtd

[Xenomai-git] Gilles Chanteperdrix : drivers/ipc: adapt BUFP after RTDM changes

2014-05-16 Thread git repository hosting
Module: xenomai-forge
Branch: next
Commit: 53d61be0b6566e9981107b9327042c6f1056cbd2
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=53d61be0b6566e9981107b9327042c6f1056cbd2

Author: Gilles Chanteperdrix 
Date:   Tue Feb  4 21:43:40 2014 +0100

drivers/ipc: adapt BUFP after RTDM changes

---

 kernel/drivers/ipc/bufp.c |  116 -
 1 file changed, 61 insertions(+), 55 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 99e1a1e..3216aef 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -105,7 +105,7 @@ static struct xnpnode_link __bufp_pnode = {
 #endif /* !CONFIG_XENO_OPT_VFILE */
 
 static int bufp_socket(struct rtipc_private *priv,
-  rtdm_user_info_t *user_info)
+  struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -131,16 +131,21 @@ static int bufp_socket(struct rtipc_private *priv,
return 0;
 }
 
-static int bufp_close(struct rtipc_private *priv,
- rtdm_user_info_t *user_info)
+static void bufp_close(struct rtipc_private *priv,
+   struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
rtdm_event_destroy(&sk->i_event);
rtdm_event_destroy(&sk->o_event);
 
-   if (sk->name.sipc_port > -1)
+   if (sk->name.sipc_port > -1) {
+   spl_t s;
+
+   cobalt_atomic_enter(s);
xnmap_remove(portmap, sk->name.sipc_port);
+   cobalt_atomic_leave(s);
+   }
 
if (sk->handle)
xnregistry_remove(sk->handle);
@@ -149,8 +154,6 @@ static int bufp_close(struct rtipc_private *priv,
free_pages_exact(sk->bufmem, sk->bufsz);
 
kfree(sk);
-
-   return 0;
 }
 
 static ssize_t __bufp_readbuf(struct bufp_socket *sk,
@@ -282,7 +285,7 @@ out:
 }
 
 static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct rtdm_fd *context,
  struct iovec *iov, int iovlen, int flags,
  struct sockaddr_ipc *saddr)
 {
@@ -313,7 +316,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
if (iov[nvec].iov_len == 0)
continue;
vlen = wrlen >= iov[nvec].iov_len ? iov[nvec].iov_len : wrlen;
-   if (user_info) {
+   if (rtdm_context_user_p(context)) {
xnbufd_map_uread(&bufd, iov[nvec].iov_base, vlen);
ret = __bufp_readbuf(sk, &bufd, flags);
xnbufd_unmap_uread(&bufd);
@@ -344,7 +347,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_recvmsg(struct rtipc_private *priv,
-   rtdm_user_info_t *user_info,
+   struct rtdm_fd *context,
struct msghdr *msg, int flags)
 {
struct iovec iov[RTIPC_IOV_MAX];
@@ -364,23 +367,23 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(user_info, iov, msg->msg_iov,
+   if (rtipc_get_arg(context, iov, msg->msg_iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
-   ret = __bufp_recvmsg(priv, user_info,
+   ret = __bufp_recvmsg(priv, context,
 iov, msg->msg_iovlen, flags, &saddr);
if (ret <= 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(user_info, msg->msg_iov, iov,
+   if (rtipc_put_arg(context, msg->msg_iov, iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
/* Copy the source address if required. */
if (msg->msg_name) {
-   if (rtipc_put_arg(user_info, msg->msg_name,
+   if (rtipc_put_arg(context, msg->msg_name,
  &saddr, sizeof(saddr)))
return -EFAULT;
msg->msg_namelen = sizeof(struct sockaddr_ipc);
@@ -390,11 +393,11 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_read(struct rtipc_private *priv,
-rtdm_user_info_t *user_info,
+struct rtdm_fd *context,
 void *buf, size_t len)
 {
struct iovec iov = { .iov_base = buf, .iov_len = len };
-   return __bufp_recvmsg(priv, user_info, &iov, 1, 0, NULL);
+   return __bufp_recvmsg(priv, context, &iov, 1, 0, NULL);
 }
 
 static ssize_t __bufp_writebuf(struct bufp_socket *rsk,
@@ -514,26 +517,26 @@ out:
 }
 
 static ssize_t __bufp_sendmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct rtdm_

[Xenomai-git] Gilles Chanteperdrix : drivers/ipc: adapt BUFP after RTDM changes

2014-05-10 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge-rtdm-rework
Commit: 2ddfb2e68877c7790dc575e7ec5d12cfbb003cb1
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=2ddfb2e68877c7790dc575e7ec5d12cfbb003cb1

Author: Gilles Chanteperdrix 
Date:   Tue Feb  4 21:43:40 2014 +0100

drivers/ipc: adapt BUFP after RTDM changes

---

 kernel/drivers/ipc/bufp.c |  116 -
 1 file changed, 61 insertions(+), 55 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 2e80bc4..cfc11e8 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -105,7 +105,7 @@ static struct xnpnode_link __bufp_pnode = {
 #endif /* !CONFIG_XENO_OPT_VFILE */
 
 static int bufp_socket(struct rtipc_private *priv,
-  rtdm_user_info_t *user_info)
+  struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -131,16 +131,21 @@ static int bufp_socket(struct rtipc_private *priv,
return 0;
 }
 
-static int bufp_close(struct rtipc_private *priv,
- rtdm_user_info_t *user_info)
+static void bufp_close(struct rtipc_private *priv,
+   struct rtdm_fd *context)
 {
struct bufp_socket *sk = priv->state;
 
rtdm_event_destroy(&sk->i_event);
rtdm_event_destroy(&sk->o_event);
 
-   if (sk->name.sipc_port > -1)
+   if (sk->name.sipc_port > -1) {
+   spl_t s;
+
+   cobalt_atomic_enter(s);
xnmap_remove(portmap, sk->name.sipc_port);
+   cobalt_atomic_leave(s);
+   }
 
if (sk->handle)
xnregistry_remove(sk->handle);
@@ -149,8 +154,6 @@ static int bufp_close(struct rtipc_private *priv,
free_pages_exact(sk->bufmem, sk->bufsz);
 
kfree(sk);
-
-   return 0;
 }
 
 static ssize_t __bufp_readbuf(struct bufp_socket *sk,
@@ -282,7 +285,7 @@ out:
 }
 
 static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct rtdm_fd *context,
  struct iovec *iov, int iovlen, int flags,
  struct sockaddr_ipc *saddr)
 {
@@ -313,7 +316,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
if (iov[nvec].iov_len == 0)
continue;
vlen = wrlen >= iov[nvec].iov_len ? iov[nvec].iov_len : wrlen;
-   if (user_info) {
+   if (rtdm_context_user_p(context)) {
xnbufd_map_uread(&bufd, iov[nvec].iov_base, vlen);
ret = __bufp_readbuf(sk, &bufd, flags);
xnbufd_unmap_uread(&bufd);
@@ -344,7 +347,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_recvmsg(struct rtipc_private *priv,
-   rtdm_user_info_t *user_info,
+   struct rtdm_fd *context,
struct msghdr *msg, int flags)
 {
struct iovec iov[RTIPC_IOV_MAX];
@@ -364,23 +367,23 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(user_info, iov, msg->msg_iov,
+   if (rtipc_get_arg(context, iov, msg->msg_iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
-   ret = __bufp_recvmsg(priv, user_info,
+   ret = __bufp_recvmsg(priv, context,
 iov, msg->msg_iovlen, flags, &saddr);
if (ret <= 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(user_info, msg->msg_iov, iov,
+   if (rtipc_put_arg(context, msg->msg_iov, iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
/* Copy the source address if required. */
if (msg->msg_name) {
-   if (rtipc_put_arg(user_info, msg->msg_name,
+   if (rtipc_put_arg(context, msg->msg_name,
  &saddr, sizeof(saddr)))
return -EFAULT;
msg->msg_namelen = sizeof(struct sockaddr_ipc);
@@ -390,11 +393,11 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_read(struct rtipc_private *priv,
-rtdm_user_info_t *user_info,
+struct rtdm_fd *context,
 void *buf, size_t len)
 {
struct iovec iov = { .iov_base = buf, .iov_len = len };
-   return __bufp_recvmsg(priv, user_info, &iov, 1, 0, NULL);
+   return __bufp_recvmsg(priv, context, &iov, 1, 0, NULL);
 }
 
 static ssize_t __bufp_writebuf(struct bufp_socket *rsk,
@@ -514,26 +517,26 @@ out:
 }
 
 static ssize_t __bufp_sendmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+

[Xenomai-git] Gilles Chanteperdrix : drivers/ipc: adapt BUFP after RTDM changes

2014-02-10 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 6824bfbe2a1e4d46d82aeb5cc3f95512067b66bd
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=6824bfbe2a1e4d46d82aeb5cc3f95512067b66bd

Author: Gilles Chanteperdrix 
Date:   Tue Feb  4 21:43:40 2014 +0100

drivers/ipc: adapt BUFP after RTDM changes

---

 kernel/drivers/ipc/bufp.c |  114 +++--
 1 file changed, 58 insertions(+), 56 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 233d86a..b3cfcc4 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -113,7 +113,7 @@ static struct xnpnode_link __bufp_pnode = {
 #endif /* !CONFIG_XENO_OPT_VFILE */
 
 static int bufp_socket(struct rtipc_private *priv,
-  rtdm_user_info_t *user_info)
+  struct xnfd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -139,8 +139,8 @@ static int bufp_socket(struct rtipc_private *priv,
return 0;
 }
 
-static int bufp_close(struct rtipc_private *priv,
- rtdm_user_info_t *user_info)
+static void bufp_close(struct rtipc_private *priv,
+   struct xnfd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -148,7 +148,9 @@ static int bufp_close(struct rtipc_private *priv,
rtdm_event_destroy(&sk->o_event);
 
if (sk->name.sipc_port > -1)
-   xnmap_remove(portmap, sk->name.sipc_port);
+   RTDM_EXECUTE_ATOMICALLY(
+   xnmap_remove(portmap, sk->name.sipc_port);
+   );
 
if (sk->handle)
xnregistry_remove(sk->handle);
@@ -157,8 +159,6 @@ static int bufp_close(struct rtipc_private *priv,
free_pages_exact(sk->bufmem, sk->bufsz);
 
kfree(sk);
-
-   return 0;
 }
 
 static ssize_t __bufp_readbuf(struct bufp_socket *sk,
@@ -290,7 +290,7 @@ out:
 }
 
 static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct xnfd *context,
  struct iovec *iov, int iovlen, int flags,
  struct sockaddr_ipc *saddr)
 {
@@ -321,7 +321,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
if (iov[nvec].iov_len == 0)
continue;
vlen = wrlen >= iov[nvec].iov_len ? iov[nvec].iov_len : wrlen;
-   if (user_info) {
+   if (rtdm_context_user_p(context)) {
xnbufd_map_uread(&bufd, iov[nvec].iov_base, vlen);
ret = __bufp_readbuf(sk, &bufd, flags);
xnbufd_unmap_uread(&bufd);
@@ -352,7 +352,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_recvmsg(struct rtipc_private *priv,
-   rtdm_user_info_t *user_info,
+   struct xnfd *context,
struct msghdr *msg, int flags)
 {
struct iovec iov[RTIPC_IOV_MAX];
@@ -372,23 +372,23 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(user_info, iov, msg->msg_iov,
+   if (rtipc_get_arg(context, iov, msg->msg_iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
-   ret = __bufp_recvmsg(priv, user_info,
+   ret = __bufp_recvmsg(priv, context,
 iov, msg->msg_iovlen, flags, &saddr);
if (ret <= 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(user_info, msg->msg_iov, iov,
+   if (rtipc_put_arg(context, msg->msg_iov, iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
/* Copy the source address if required. */
if (msg->msg_name) {
-   if (rtipc_put_arg(user_info, msg->msg_name,
+   if (rtipc_put_arg(context, msg->msg_name,
  &saddr, sizeof(saddr)))
return -EFAULT;
msg->msg_namelen = sizeof(struct sockaddr_ipc);
@@ -398,11 +398,11 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_read(struct rtipc_private *priv,
-rtdm_user_info_t *user_info,
+struct xnfd *context,
 void *buf, size_t len)
 {
struct iovec iov = { .iov_base = buf, .iov_len = len };
-   return __bufp_recvmsg(priv, user_info, &iov, 1, 0, NULL);
+   return __bufp_recvmsg(priv, context, &iov, 1, 0, NULL);
 }
 
 static ssize_t __bufp_writebuf(struct bufp_socket *rsk,
@@ -522,26 +522,25 @@ out:
 }
 
 static ssize_t __bufp_sendmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct xnfd *context,
   

[Xenomai-git] Gilles Chanteperdrix : drivers/ipc: adapt BUFP after RTDM changes

2014-02-04 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: dc5822c60b1c7f48239791acaef86a1aa5046af9
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=dc5822c60b1c7f48239791acaef86a1aa5046af9

Author: Gilles Chanteperdrix 
Date:   Tue Feb  4 21:43:40 2014 +0100

drivers/ipc: adapt BUFP after RTDM changes

---

 kernel/drivers/ipc/bufp.c |  114 +++--
 1 file changed, 58 insertions(+), 56 deletions(-)

diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 233d86a..b3cfcc4 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -113,7 +113,7 @@ static struct xnpnode_link __bufp_pnode = {
 #endif /* !CONFIG_XENO_OPT_VFILE */
 
 static int bufp_socket(struct rtipc_private *priv,
-  rtdm_user_info_t *user_info)
+  struct xnfd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -139,8 +139,8 @@ static int bufp_socket(struct rtipc_private *priv,
return 0;
 }
 
-static int bufp_close(struct rtipc_private *priv,
- rtdm_user_info_t *user_info)
+static void bufp_close(struct rtipc_private *priv,
+   struct xnfd *context)
 {
struct bufp_socket *sk = priv->state;
 
@@ -148,7 +148,9 @@ static int bufp_close(struct rtipc_private *priv,
rtdm_event_destroy(&sk->o_event);
 
if (sk->name.sipc_port > -1)
-   xnmap_remove(portmap, sk->name.sipc_port);
+   RTDM_EXECUTE_ATOMICALLY(
+   xnmap_remove(portmap, sk->name.sipc_port);
+   );
 
if (sk->handle)
xnregistry_remove(sk->handle);
@@ -157,8 +159,6 @@ static int bufp_close(struct rtipc_private *priv,
free_pages_exact(sk->bufmem, sk->bufsz);
 
kfree(sk);
-
-   return 0;
 }
 
 static ssize_t __bufp_readbuf(struct bufp_socket *sk,
@@ -290,7 +290,7 @@ out:
 }
 
 static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct xnfd *context,
  struct iovec *iov, int iovlen, int flags,
  struct sockaddr_ipc *saddr)
 {
@@ -321,7 +321,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
if (iov[nvec].iov_len == 0)
continue;
vlen = wrlen >= iov[nvec].iov_len ? iov[nvec].iov_len : wrlen;
-   if (user_info) {
+   if (rtdm_context_user_p(context)) {
xnbufd_map_uread(&bufd, iov[nvec].iov_base, vlen);
ret = __bufp_readbuf(sk, &bufd, flags);
xnbufd_unmap_uread(&bufd);
@@ -352,7 +352,7 @@ static ssize_t __bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_recvmsg(struct rtipc_private *priv,
-   rtdm_user_info_t *user_info,
+   struct xnfd *context,
struct msghdr *msg, int flags)
 {
struct iovec iov[RTIPC_IOV_MAX];
@@ -372,23 +372,23 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
return -EINVAL;
 
/* Copy I/O vector in */
-   if (rtipc_get_arg(user_info, iov, msg->msg_iov,
+   if (rtipc_get_arg(context, iov, msg->msg_iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
-   ret = __bufp_recvmsg(priv, user_info,
+   ret = __bufp_recvmsg(priv, context,
 iov, msg->msg_iovlen, flags, &saddr);
if (ret <= 0)
return ret;
 
/* Copy the updated I/O vector back */
-   if (rtipc_put_arg(user_info, msg->msg_iov, iov,
+   if (rtipc_put_arg(context, msg->msg_iov, iov,
  sizeof(iov[0]) * msg->msg_iovlen))
return -EFAULT;
 
/* Copy the source address if required. */
if (msg->msg_name) {
-   if (rtipc_put_arg(user_info, msg->msg_name,
+   if (rtipc_put_arg(context, msg->msg_name,
  &saddr, sizeof(saddr)))
return -EFAULT;
msg->msg_namelen = sizeof(struct sockaddr_ipc);
@@ -398,11 +398,11 @@ static ssize_t bufp_recvmsg(struct rtipc_private *priv,
 }
 
 static ssize_t bufp_read(struct rtipc_private *priv,
-rtdm_user_info_t *user_info,
+struct xnfd *context,
 void *buf, size_t len)
 {
struct iovec iov = { .iov_base = buf, .iov_len = len };
-   return __bufp_recvmsg(priv, user_info, &iov, 1, 0, NULL);
+   return __bufp_recvmsg(priv, context, &iov, 1, 0, NULL);
 }
 
 static ssize_t __bufp_writebuf(struct bufp_socket *rsk,
@@ -522,26 +522,25 @@ out:
 }
 
 static ssize_t __bufp_sendmsg(struct rtipc_private *priv,
- rtdm_user_info_t *user_info,
+ struct xnfd *context,