Ignore:
Timestamp:
Nov 1, 2018, 12:10:42 PM (6 years ago)
Author:
alain
Message:

Improve signals.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/kern/rpc.h

    r564 r583  
    8282
    8383    RPC_VMM_GET_VSEG           = 20,
    84     RPC_VMM_GET_PTE            = 21,
     84    RPC_VMM_GLOBAL_UPDATE_PTE  = 21,
    8585    RPC_KCM_ALLOC              = 22,
    8686    RPC_KCM_FREE               = 23,
     
    149149
    150150/***********************************************************************************
    151  * This function contains the infinite loop executed by a RPC thread,
    152  * to handle all pending RPCs registered in the RPC fifo attached to a given core.
     151 * This function contains the infinite loop executed by a RPC server thread,
     152 * to handle pending RPCs registered in the RPC fifo attached to a given core.
     153 * In each iteration in this loop, it try to handle one RPC request:
     154 * - it tries to take the RPC FIFO ownership,
     155 * - it consumes one request when the FIFO is not empty,
     156 * - it releases the FIFO ownership,
     157 * - it execute the requested service,
     158 * - it unblock and send an IPI to the client thread,
     159 * - it suicides if the number of RPC threads for this core is to large,
     160 * - it block on IDLE and deschedule otherwise. 
    153161 **********************************************************************************/
    154162void rpc_thread_func( void );
     
    483491
    484492/***********************************************************************************
    485  * [21] The RPC_VMM_GET_PTE returns in the <ppn> and <attr> arguments the PTE value
    486  * for a given <vpn> in a given <process> (page_fault or copy_on_write event).
    487  * The server cluster is supposed to be the reference cluster, and the vseg
    488  * containing the VPN must be registered in the reference VMM.
    489  * It returns an error if physical memory cannot be allocated for the missing PTE2,
    490  * or for the missing page itself.
     493 * [21] The RPC_VMM_GLOBAL_UPDATE_PTE can be used by a thread that is not running
     494 * in reference cluster, to ask the reference cluster to update a specific entry,
     495 * identified by the <vpn> argument in all GPT copies of a process identified by
     496 * the <process> argument, using the values defined by <attr> and <ppn> arguments.
     497 * The server cluster is supposed to be the reference cluster.
     498 * It does not return any error code as the called function vmm_global_update_pte()
     499 * cannot fail.
    491500 ***********************************************************************************
    492501 * @ cxy     : server cluster identifier.
    493  * @ process : [in]   pointer on process descriptor in server cluster.
    494  * @ vaddr   : [in]   virtual address to be searched.
    495  * @ cow     : [in]   "copy_on_write" event if true / "page_fault" event if false.
    496  * @ attr    : [out]  address of buffer for attributes.
    497  * @ ppn     : [out]  address of buffer for PPN.
    498  * @ error   : [out]  address of buffer for error code.
    499  **********************************************************************************/
    500 void rpc_vmm_get_pte_client( cxy_t              cxy,
    501                              struct process_s * process,
    502                              vpn_t              vpn,
    503                              bool_t             cow,
    504                              uint32_t         * attr,
    505                              ppn_t            * ppn,
    506                              error_t          * error );
    507 
    508 void rpc_vmm_get_pte_server( xptr_t xp );
     502 * @ process : [in]  pointer on process descriptor in server cluster.
     503 * @ vpn     : [in]  virtual address to be searched.
     504 * @ attr    : [in]  PTE attributes.
     505 * @ ppn     : [it]  PTE PPN.
     506 **********************************************************************************/
     507void rpc_vmm_global_update_pte_client( cxy_t              cxy,
     508                                       struct process_s * process,
     509                                       vpn_t              vpn,
     510                                       uint32_t           attr,
     511                                       ppn_t              ppn );
     512
     513void rpc_vmm_global_update_pte_server( xptr_t xp );
    509514
    510515/***********************************************************************************
Note: See TracChangeset for help on using the changeset viewer.