Index: trunk/kernel/kern/rpc.c
===================================================================
--- trunk/kernel/kern/rpc.c	(revision 248)
+++ trunk/kernel/kern/rpc.c	(revision 265)
@@ -74,5 +74,5 @@
     &rpc_kcm_alloc_server,              // 22
     &rpc_kcm_free_server,               // 23
-    &rpc_mapper_move_server,            // 24
+    &rpc_mapper_move_buffer_server,     // 24
     &rpc_undefined,                     // 25
     &rpc_undefined,                     // 26
@@ -1184,21 +1184,22 @@
 
 /////////////////////////////////////////////////////////////////////////////////////////
-// [24]          Marshaling functions attached to RPC_MAPPER_MOVE
-/////////////////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////
-void rpc_mapper_move_client( cxy_t      cxy,
-                             mapper_t * mapper,        // in
-                             uint32_t   to_buffer,     // in
-                             uint32_t   file_offset,   // in
-                             void     * buffer,        // in
-                             uint32_t   size,          // in
-                             error_t  * error )        // out
-{
-    assert( (cxy != local_cxy) , __FUNCTION__ , "target cluster is not remote\n");
-
-    // initialise RPC descriptor header 
-    rpc_desc_t  rpc;
-    rpc.index    = RPC_MAPPER_MOVE;
+// [24]          Marshaling functions attached to RPC_MAPPER_MOVE_BUFFER
+/////////////////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////
+void rpc_mapper_move_buffer_client( cxy_t      cxy,
+                                    mapper_t * mapper,        // in
+                                    bool_t     to_buffer,     // in
+                                    bool_t     is_user,       // in
+                                    uint32_t   file_offset,   // in
+                                    void     * buffer,        // in
+                                    uint32_t   size,          // in
+                                    error_t  * error )        // out
+{
+    assert( (cxy != local_cxy) , __FUNCTION__ , "target cluster is not remote\n");
+
+    // initialise RPC descriptor header 
+    rpc_desc_t  rpc;
+    rpc.index    = RPC_MAPPER_MOVE_BUFFER;
     rpc.response = 1;
 
@@ -1206,7 +1207,8 @@
     rpc.args[0] = (uint64_t)(intptr_t)mapper;
     rpc.args[1] = (uint64_t)to_buffer;
-    rpc.args[2] = (uint64_t)file_offset;
-    rpc.args[3] = (uint64_t)(intptr_t)buffer;
-    rpc.args[4] = (uint64_t)size;
+    rpc.args[2] = (uint64_t)is_user;
+    rpc.args[3] = (uint64_t)file_offset;
+    rpc.args[4] = (uint64_t)(intptr_t)buffer;
+    rpc.args[5] = (uint64_t)size;
 
     // register RPC request in remote RPC fifo (blocking function)
@@ -1214,12 +1216,13 @@
 
     // get output values from RPC descriptor
-    *error     = (error_t)rpc.args[5];
-}
-
-////////////////////////////////////////
-void rpc_mapper_move_server( xptr_t xp )
+    *error     = (error_t)rpc.args[6];
+}
+
+///////////////////////////////////////////////
+void rpc_mapper_move_buffer_server( xptr_t xp )
 {
     mapper_t * mapper;
-    uint32_t   to_buffer;
+    bool_t     to_buffer;
+    bool_t     is_user;
     uint32_t   file_offset;
     void     * buffer;
@@ -1234,17 +1237,19 @@
     mapper      = (mapper_t *)(intptr_t)hal_remote_lwd( XPTR( client_cxy , &desc->args[0] ) );
     to_buffer   =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[1] ) );
-    file_offset =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[2] ) );
-    buffer      = (void     *)(intptr_t)hal_remote_lwd( XPTR( client_cxy , &desc->args[3] ) );
-    size        =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[4] ) );
+    is_user     =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[2] ) );
+    file_offset =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[3] ) );
+    buffer      = (void     *)(intptr_t)hal_remote_lwd( XPTR( client_cxy , &desc->args[4] ) );
+    size        =                       hal_remote_lwd( XPTR( client_cxy , &desc->args[5] ) );
 
     // call local kernel function
-    error = mapper_move( mapper,
-                         to_buffer,
-                         file_offset,
-                         buffer,
-                         size );
+    error = mapper_move_buffer( mapper,
+                                to_buffer,
+                                is_user,
+                                file_offset,
+                                buffer,
+                                size );
 
     // set output argument to client RPC descriptor
-    hal_remote_swd( XPTR( client_cxy , &desc->args[5] ) , (uint64_t)error );
+    hal_remote_swd( XPTR( client_cxy , &desc->args[6] ) , (uint64_t)error );
 }
 
