Changeset 641 for trunk/kernel/libk
- Timestamp:
- Oct 10, 2019, 1:42:04 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/libk/user_dir.c
r640 r641 145 145 } 146 146 147 // Build an initialize the dirent array as a list of pages.147 // Build and initialize the dirent array as a list of pages. 148 148 // For each iteration in this while loop: 149 149 // - allocate one physical 4 Kbytes (64 dirent slots) … … 174 174 } 175 175 176 // call the relevant FS specific function to copy up to 64dirents in page176 // call the relevant FS specific function to copy dirents in page 177 177 error = vfs_fs_get_user_dir( inode, 178 178 base, … … 210 210 #endif 211 211 212 // compute required vseg size for a 64 bytes dirent212 // compute required vseg size 213 213 vseg_size = total_dirents << 6; 214 214 … … 254 254 // check vseg size 255 255 assert( (total_pages == hal_remote_l32( XPTR( ref_cxy , &vseg->vpn_size ) ) ), 256 "unconsistent vseg size for dirent array " );256 "unconsistent vseg size for dirent array " ); 257 257 258 258 // build extended pointer on reference process GPT … … 294 294 295 295 // delete the vseg 296 i f( ref_cxy == local_cxy) vmm_remove_vseg( ref_ptr, vseg);297 else rpc_vmm_remove_vseg_client( ref_cxy, ref_ptr, vseg);296 intptr_t base = (intptr_t)hal_remote_lpt( XPTR( ref_cxy , &vseg->min ) ); 297 rpc_vmm_remove_vseg_client( ref_cxy, ref_pid, base ); 298 298 299 299 // release the user_dir descriptor … … 434 434 // to wait all RPC responses, and will be unblocked by the last RPC server thread. 435 435 // It allocates a - shared - RPC descriptor in the stack, because all parallel 436 // server threads use the same input arguments, and the same response field.436 // server threads use the same input arguments, and there is no out argument. 437 437 438 438 // get owner cluster identifier and process lpid … … 454 454 455 455 // initialize a shared RPC descriptor 456 // can be shared, because no out arguments457 456 rpc.rsp = &responses; 458 rpc.blocking = false; 457 rpc.blocking = false; // non blocking behaviour for rpc_send() 459 458 rpc.index = RPC_VMM_REMOVE_VSEG; 460 459 rpc.thread = this; … … 476 475 hal_atomic_add( &responses , 1 ); 477 476 477 #if (DEBUG_USER_DIR & 1) 478 uint32_t cycle = (uint32_t)hal_get_cycles(); 479 if( cycle > DEBUG_USER_DIR ) 480 printk("\n[%s] thread[%x,%x] register RPC request in cluster %x\n", 481 __FUNCTION__, this->process->pid, this->trdid, process_cxy ); 482 #endif 483 478 484 // send RPC to target cluster 479 485 rpc_send( process_cxy , &rpc );
Note: See TracChangeset
for help on using the changeset viewer.