Changeset 313 for trunk/kernel/vfs


Ignore:
Timestamp:
Aug 2, 2017, 3:24:57 PM (5 years ago)
Author:
alain
Message:

RSeveral modifs in the page-fault handling.

Location:
trunk/kernel/vfs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/vfs/vfs.c

    r296 r313  
    662662}  // end vfs_open()
    663663
    664 /////////////////////////////////////
    665 error_t vfs_move( bool_t   to_buffer,
    666                   bool_t   is_user,
    667                   xptr_t   file_xp,
    668                   void   * buffer,
    669                   uint32_t size )
     664//////////////////////////////////////////
     665error_t vfs_user_move( bool_t   to_buffer,
     666                       xptr_t   file_xp,
     667                       void   * buffer,
     668                       uint32_t size )
    670669{
    671670    assert( ( file_xp != XPTR_NULL ) , __FUNCTION__ , "file_xp == XPTR_NULL" );
     
    695694        if( file_cxy == local_cxy )
    696695        {
    697             error = mapper_move_buffer( mapper,
    698                                         to_buffer,
    699                                         is_user,
    700                                         file_offset,
    701                                         buffer,
    702                                         size );
     696            error = mapper_move_user( mapper,
     697                                      to_buffer,
     698                                      file_offset,
     699                                      buffer,
     700                                      size );
    703701        }
    704702        else
    705703        {
    706             rpc_mapper_move_buffer_client( file_cxy,
    707                                            mapper,
    708                                            to_buffer,
    709                                            is_user,
    710                                            file_offset,
    711                                            buffer,
    712                                            size,
    713                                            &error );
     704            rpc_mapper_move_user_client( file_cxy,
     705                                         mapper,
     706                                         to_buffer,
     707                                         true,          // user buffer
     708                                         file_offset,
     709                                         (uint64_t)(intptr_t)buffer,
     710                                         size,
     711                                         &error );
    714712        }
    715713
     
    722720        return -1;
    723721    }
    724 }  // end vfs_move()
     722}  // end vfs_user_move()
    725723
    726724//////////////////////////////////////
  • trunk/kernel/vfs/vfs.h

    r296 r313  
    732732
    733733/******************************************************************************************
    734  * This function moves <size> bytes between the file identified by the open file descriptor
    735  * <file_xp> and a local kernel or user <buffer>, as defined by the <is_user> argument,
    736  * and taken into account the offset in <file_xp>.
    737  * The transfer direction is defined by the <to_buffer> argument.
     734 * This function moves <size> bytes between a remote file mapper, identified by the
     735 * <file_xp> argument, and a - possibly distributed - user space <buffer>, taken into
     736 * account the offset in <file_xp>. The transfer direction is defined by <to_buffer>.
     737 * This function is called by the sys_read() and sys_write() system calls.
    738738 ******************************************************************************************
    739739 * @ to_buffer : mapper -> buffer if true / buffer -> mapper if false.
    740  * @ is_user   : user space buffer if true / local kernel buffer if false.
    741740 * @ file_xp   : extended pointer on the remote file descriptor.
    742  * @ buffer    : local pointer on buffer.
     741 * @ buffer    : user space pointer on buffer (can be physically distributed).
    743742 * @ size      : requested number of bytes from offset.
    744743 * @ returns number of bytes actually transfered / -1 if error.
    745744 *****************************************************************************************/
    746 error_t vfs_move( bool_t   to_buffer,
    747                   bool_t   is_user,
    748                   xptr_t   file_xp,
    749                   void   * buffer,
    750                   uint32_t size );
     745error_t vfs_user_move( bool_t   to_buffer,
     746                       xptr_t   file_xp,
     747                       void   * buffer,
     748                       uint32_t size );
    751749
    752750/******************************************************************************************
Note: See TracChangeset for help on using the changeset viewer.