Changeset 640 for trunk/kernel/kern/rpc.h
- Timestamp:
- Oct 1, 2019, 1:19:00 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/kern/rpc.h
r635 r640 60 60 typedef enum 61 61 { 62 RPC_UNDEFINED_0 = 0, // RPC_PMEM_GET_PAGES deprecated [AG]63 RPC_UNDEFINED_1 = 1, // RPC_PMEM_RELEASE_PAGES deprecated [AG]64 RPC_UNDEFINED_2 = 2, // RPC_PMEM_DISPLAY deprecated [AG]62 RPC_UNDEFINED_0 = 0, // 63 RPC_UNDEFINED_1 = 1, // 64 RPC_UNDEFINED_2 = 2, // 65 65 RPC_PROCESS_MAKE_FORK = 3, 66 66 RPC_USER_DIR_CREATE = 4, … … 82 82 RPC_VFS_INODE_LOAD_ALL_PAGES = 19, 83 83 84 RPC_ VMM_GET_VSEG = 20,85 RPC_ VMM_GLOBAL_UPDATE_PTE = 21,86 RPC_UNDEFINED_22 = 22, // RPC_KCM_ALLOC deprecated [AG]87 RPC_UNDEFINED_23 = 23, // RPC_KCM_FREE deprecated [AG]84 RPC_UNDEFINED_20 = 20, // 85 RPC_UNDEFINED_21 = 21, // 86 RPC_UNDEFINED_22 = 22, // 87 RPC_UNDEFINED_23 = 23, // 88 88 RPC_MAPPER_SYNC = 24, 89 RPC_ UNDEFUNED_25 = 25, // RPC_MAPPER_HANDLE_MISS deprecated [AG]90 RPC_VMM_ DELETE_VSEG = 26,89 RPC_VMM_RESIZE_VSEG = 25, 90 RPC_VMM_REMOVE_VSEG = 26, 91 91 RPC_VMM_CREATE_VSEG = 27, 92 92 RPC_VMM_SET_COW = 28, 93 RPC_UNDEFINED_29 = 29, // RPC_VMM_DISPLAY deprecated [AG]93 RPC_UNDEFINED_29 = 29, // 94 94 95 95 RPC_MAX_INDEX = 30, … … 175 175 176 176 /*********************************************************************************** 177 * [0] The RPC_PMEM_GET_PAGES allocates one or several pages in a remote cluster, 178 * and returns the local pointer on the page descriptor. 179 * deprecated [AG] may 2019 180 *********************************************************************************** 181 * @ cxy : server cluster identifier 182 * @ order : [in] ln2( number of requested pages ) 183 * @ page : [out] local pointer on page descriptor / NULL if failure 184 **********************************************************************************/ 185 186 /* 187 void rpc_pmem_get_pages_client( cxy_t cxy, 188 uint32_t order, 189 struct page_s ** page ); 190 191 void rpc_pmem_get_pages_server( xptr_t xp ); 192 */ 193 194 /*********************************************************************************** 195 * [1] The RPC_PMEM_RELEASE_PAGES release one or several pages to a remote cluster. 196 * deprecated [AG] may 2019 197 *********************************************************************************** 198 * @ cxy : server cluster identifier 199 * @ page : [in] local pointer on page descriptor to release. 200 **********************************************************************************/ 201 202 /* 203 void rpc_pmem_release_pages_client( cxy_t cxy, 204 struct page_s * page ); 205 206 void rpc_pmem_release_pages_server( xptr_t xp ); 207 */ 208 209 /*********************************************************************************** 210 * [2] The RPC_PPM_DISPLAY allows any client thread to require any remote cluster 211 * identified by the <cxy> argumentto display the physical memory allocator state. 212 * deprecated [AG] may 2019 213 **********************************************************************************/ 214 215 /* 216 void rpc_ppm_display_client( cxy_t cxy ); 217 218 void rpc_ppm_display_server( xptr_t xp ); 219 */ 177 * [0] undefined 178 **********************************************************************************/ 179 180 /*********************************************************************************** 181 * [1] undefined 182 **********************************************************************************/ 183 184 /*********************************************************************************** 185 * [2] undefined 186 **********************************************************************************/ 220 187 221 188 /*********************************************************************************** … … 523 490 524 491 /*********************************************************************************** 525 * [20] The RPC_VMM_GET_VSEG returns an extended pointer 526 * on the vseg containing a given virtual address in a given process. 527 * The server cluster is supposed to be the reference cluster. 528 * It returns a non zero error value if no vseg has been founded. 529 *********************************************************************************** 530 * @ cxy : server cluster identifier. 531 * @ process : [in] pointer on process descriptor in server cluster. 532 * @ vaddr : [in] virtual address to be searched. 533 * @ vseg_xp : [out] buffer for extended pointer on vseg in client cluster. 534 * @ error : [out] local pointer on buffer for error code (in client cluster). 535 **********************************************************************************/ 536 void rpc_vmm_get_vseg_client( cxy_t cxy, 537 struct process_s * process, 538 intptr_t vaddr, 539 xptr_t * vseg_xp, 540 error_t * error ); 541 542 void rpc_vmm_get_vseg_server( xptr_t xp ); 543 544 /*********************************************************************************** 545 * [21] The RPC_VMM_GLOBAL_UPDATE_PTE can be used by a thread that is not running 546 * in reference cluster, to ask the reference cluster to update a specific entry, 547 * identified by the <vpn> argument in all GPT copies of a process identified by 548 * the <process> argument, using the values defined by <attr> and <ppn> arguments. 549 * The server cluster is supposed to be the reference cluster. 550 * It does not return any error code as the called function vmm_global_update_pte() 551 * cannot fail. 552 *********************************************************************************** 553 * @ cxy : server cluster identifier. 554 * @ process : [in] pointer on process descriptor in server cluster. 555 * @ vpn : [in] virtual address to be searched. 556 * @ attr : [in] PTE attributes. 557 * @ ppn : [it] PTE PPN. 558 **********************************************************************************/ 559 void rpc_vmm_global_update_pte_client( cxy_t cxy, 560 struct process_s * process, 561 vpn_t vpn, 562 uint32_t attr, 563 ppn_t ppn ); 564 565 void rpc_vmm_global_update_pte_server( xptr_t xp ); 566 567 /*********************************************************************************** 568 * [22] The RPC_KCM_ALLOC allocates memory from a given KCM in a remote cluster, 569 * and returns an extended pointer on the allocated object. 570 It returns XPTR_NULL if physical memory cannot be allocated. 571 *********************************************************************************** 572 * @ cxy : server cluster identifier. 573 * @ kmem_type : [in] KCM object type (as defined in kmem.h). 574 * @ buf_xp : [out] buffer for extended pointer on allocated buffer. 575 **********************************************************************************/ 576 577 /* 578 void rpc_kcm_alloc_client( cxy_t cxy, 579 uint32_t kmem_type, 580 xptr_t * buf_xp ); 581 582 void rpc_kcm_alloc_server( xptr_t xp ); 583 */ 584 585 /*********************************************************************************** 586 * [23] The RPC_KCM_FREE releases memory allocated for a KCM object of a given type, 587 * in a remote cluster. 588 *********************************************************************************** 589 * @ cxy : server cluster identifier. 590 * @ buf : [in] local pointer on allocated buffer. 591 * @ kmem_type : [in] KCM object type (as defined in kmem.h). 592 **********************************************************************************/ 593 594 /* 595 void rpc_kcm_free_client( cxy_t cxy, 596 void * buf, 597 uint32_t kmem_type ); 598 599 void rpc_kcm_free_server( xptr_t xp ); 600 */ 492 * [20] undefined 493 **********************************************************************************/ 494 495 /*********************************************************************************** 496 * [21] undefined 497 **********************************************************************************/ 498 499 /*********************************************************************************** 500 * [22] undefined 501 **********************************************************************************/ 502 503 /*********************************************************************************** 504 * [23] undefined 505 **********************************************************************************/ 601 506 602 507 /*********************************************************************************** … … 615 520 616 521 /*********************************************************************************** 617 * [25] The RPC__MAPPER_HANDLE_MISS allows a client thread to request a remote 618 * mapper to load a missing page from the IOC device. 619 * On the server side, this RPC call the mapper_handle_miss() function and return 620 * an extended pointer on the allocated page descriptor and an error status. 522 * [25] The RPC_VMM_RESIZE_VSEG allows a client thread to request a remote vseg 523 * resize. Both the VSL and the GPT are updated in the remote cluster. 621 524 *********************************************************************************** 622 525 * @ cxy : server cluster identifier. 623 * @ mapper : [in] local pointer on mapper. 624 * @ page_id : [in] missing page index in mapper 625 * @ buffer : [in] user space pointer / kernel extended pointer 626 * @ page_xp : [out] pointer on buffer for extended pointer on page descriptor. 627 * @ error : [out] error status (0 if success). 628 **********************************************************************************/ 629 /* 630 void rpc_mapper_handle_miss_client( cxy_t cxy, 631 struct mapper_s * mapper, 632 uint32_t page_id, 633 xptr_t * page_xp, 634 error_t * error ); 526 * @ process : [in] local pointer on remote process. 527 * @ vseg : [in] local pointer on remote vseg. 528 * @ new_base : [in] new vseg base address. 529 * @ new_size : [in] new vseg size. 530 **********************************************************************************/ 531 void rpc_vmm_resize_vseg_client( cxy_t cxy, 532 struct process_s * process, 533 struct vseg_s * vseg, 534 intptr_t new_base, 535 intptr_t new_size ); 635 536 636 void rpc_mapper_handle_miss_server( xptr_t xp ); 637 */ 638 /*********************************************************************************** 639 * [26] The RPC_VMM_DELETE_VSEG allows any client thread to request a remote 640 * cluster to delete from a given VMM, identified by the <pid> argument 641 * a given vseg, identified by the <vaddr> argument. 537 void rpc_vmm_resize_vseg_server( xptr_t xp ); 538 539 /*********************************************************************************** 540 * [26] The RPC_VMM_REMOVE_VSEG allows a client thread to request a remote vseg 541 * delete. Bothe the VSL and the GPT are updated in the remote cluster. 642 542 *********************************************************************************** 643 543 * @ cxy : server cluster identifier. 644 * @ p id : [in] target process identifier.645 * @ v addr : [in] vseg base address.646 **********************************************************************************/ 647 void rpc_vmm_ delete_vseg_client( cxy_tcxy,648 pid_t pid,649 intptr_t vaddr);544 * @ process : [in] local pointer on remote process. 545 * @ vseg : [in] local pointer on remote vseg. 546 **********************************************************************************/ 547 void rpc_vmm_remove_vseg_client( cxy_t cxy, 548 struct process_s * process, 549 struct vseg_s * vseg ); 650 550 651 void rpc_vmm_ delete_vseg_server( xptr_t xp );551 void rpc_vmm_remove_vseg_server( xptr_t xp ); 652 552 653 553 /*********************************************************************************** … … 698 598 699 599 /*********************************************************************************** 700 * [29] The RPC_VMM_DISPLAY allows any client thread to display the VMM state 701 * of a remote reference process identified by the <cxy> and <process> arguments. 702 * The type of display is defined by the <detailed> boolean argument. 703 *********************************************************************************** 704 * @ cxy : server cluster identifier. 705 * @ process : [in] local pointer on reference process descriptor. 706 * @ detailed : [in] detailed display if true. 707 **********************************************************************************/ 708 709 /* 710 void rpc_hal_vmm_display_client( cxy_t cxy, 711 struct process_s * process, 712 bool_t detailed ); 713 714 void rpc_hal_vmm_display_server( xptr_t xp ); 715 */ 600 * [29] undefined 601 **********************************************************************************/ 602 716 603 717 604 #endif
Note: See TracChangeset
for help on using the changeset viewer.