Changeset 611 for trunk/kernel/kern/rpc.h
- Timestamp:
- Jan 9, 2019, 3:02:51 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/rpc.h
r610 r611 54 54 /*********************************************************************************** 55 55 * This enum defines all RPC indexes. 56 * It must be consistent with the rpc_server[] array defined in in the rpc.c file.56 * It must be consistent with the rpc_server[] arrays defined in in the rpc.c file. 57 57 **********************************************************************************/ 58 58 … … 68 68 RPC_THREAD_KERNEL_CREATE = 7, 69 69 RPC_UNDEFINED_8 = 8, 70 RPC_PROCESS_SIGACTION = 9, 70 RPC_PROCESS_SIGACTION = 9, // non blocking 71 71 72 72 RPC_VFS_INODE_CREATE = 10, … … 87 87 RPC_UNDEFINED_24 = 24, 88 88 RPC_MAPPER_HANDLE_MISS = 25, 89 RPC_ UNDEFINED_26 = 26,89 RPC_VMM_DELETE_VSEG = 26, // non blocking 90 90 RPC_VMM_CREATE_VSEG = 27, 91 91 RPC_VMM_SET_COW = 28, … … 281 281 282 282 /*********************************************************************************** 283 * [9] The RPC_PROCESS_SIGACTION allows a thread running in any cluster 284 * to request a cluster identified by the <cxy> argument (local or remote) 285 * to execute a given sigaction for a given cluster. The <action_type> and 286 * the <pid> arguments are defined in the shared RPC descriptor, that must be 287 * initialised by the client thread. 283 * [9] The non blocking RPC_PROCESS_SIGACTION allows any client thread running in 284 * any cluster to send parallel RPC requests to one or several servers (that can be 285 * local or remote), to execute a given sigaction, defined by the <action_type> 286 * argument[1], for a given process identified by the <pid> argument[0]. 288 287 * 289 * WARNING : It is implemented as a NON BLOCKING multicast RPC, that can be sent 290 * in parallel to all process copies. The various RPC server threads atomically 291 * decrement the <response> field in the shared RPC descriptor. 292 * The last server thread unblock the client thread that blocked (after sending 293 * all RPC requests) in the process_sigaction() function. 288 * WARNING : It is implemented as a NON BLOCKING RPC, that can be sent in parallel 289 * to several servers. The RPC descriptor, containing the <action_type> and <pid> 290 * arguments, as well as the RPC <index>, <blocked>, and <response> fields, must 291 * be allocated and initialised by the calling function itself. 292 * Each RPC server thread atomically decrements the <response> field in this 293 * shared RPC descriptor. The last server thread unblock the client thread, 294 * that blocked only after sending all parallel RPC requests to all servers. 294 295 *********************************************************************************** 295 296 * @ cxy : server cluster identifier. 296 * @ rpc : pointer on ishared RPC descriptor initialized by the client thread.297 * @ rpc : pointer on shared RPC descriptor initialized by the client thread. 297 298 **********************************************************************************/ 298 299 void rpc_process_sigaction_client( cxy_t cxy, … … 550 551 * On the server side, this RPC call the mapper_handle_miss() function and return 551 552 * an extended pointer on the allocated page descriptor and an error status. 553 *********************************************************************************** 552 554 * @ cxy : server cluster identifier. 553 555 * @ mapper : [in] local pointer on mapper. … … 566 568 567 569 /*********************************************************************************** 568 * [26] undefined slot 569 **********************************************************************************/ 570 * [26] The non blocking RPC_VMM_DELETE_VSEG allows any client thread running in 571 * any cluster to send parallel RPC requests to one or several clusters (that can be 572 * local or remote), to delete from a given VMM, identified by the <pid> argument[0] 573 * a given vseg, identified by the <vaddr> argument[1]. 574 * 575 * WARNING : It is implemented as a NON BLOCKING RPC, that can be sent in parallel 576 * to several servers. The RPC descriptor, containing the <pid> and <vaddr> 577 * arguments, as well as the RPC <index>, <blocked>, and <response> fields, must 578 * be allocated and initialised by the calling function itself. 579 * Each RPC server thread atomically decrements the the <response> field in this 580 * shared RPC descriptor. The last server thread unblock the client thread, 581 * that blocked only after sending all paralle RPC requests to all servers. 582 *********************************************************************************** 583 * @ cxy : server cluster identifier. 584 * @ rpc : pointer on shared RPC descriptor initialized by the client thread. 585 **********************************************************************************/ 586 void rpc_vmm_delete_vseg_client( cxy_t cxy, 587 struct rpc_desc_s * rpc ); 588 589 void rpc_vmm_delete_vseg_server( xptr_t xp ); 570 590 571 591 /***********************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.