Changeset 583 for trunk/kernel/kern/rpc.h
- Timestamp:
- Nov 1, 2018, 12:10:42 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/rpc.h
r564 r583 82 82 83 83 RPC_VMM_GET_VSEG = 20, 84 RPC_VMM_G ET_PTE= 21,84 RPC_VMM_GLOBAL_UPDATE_PTE = 21, 85 85 RPC_KCM_ALLOC = 22, 86 86 RPC_KCM_FREE = 23, … … 149 149 150 150 /*********************************************************************************** 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. 153 161 **********************************************************************************/ 154 162 void rpc_thread_func( void ); … … 483 491 484 492 /*********************************************************************************** 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. 491 500 *********************************************************************************** 492 501 * @ 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 **********************************************************************************/ 507 void 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 513 void rpc_vmm_global_update_pte_server( xptr_t xp ); 509 514 510 515 /***********************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.