Changeset 614 for trunk/kernel/fs
- Timestamp:
- Jan 15, 2019, 1:59:32 PM (6 years ago)
- Location:
- trunk/kernel/fs
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/fs/devfs.c
r612 r614 110 110 assert( (error == 0) , "cannot create <dev>\n" ); 111 111 112 #if DEBUG_DEVFS_ INIT112 #if DEBUG_DEVFS_GLOBAL_INIT 113 113 uint32_t cycle = (uint32_t)hal_get_cycles(); 114 114 thread_t * this = CURRENT_THREAD; 115 if( DEBUG_DEVFS_ INIT < cycle )115 if( DEBUG_DEVFS_GLOBAL_INIT < cycle ) 116 116 printk("\n[%s] thread[%x,%x] created <dev> inode / cycle %d\n", 117 117 __FUNCTION__, this->process->pid, this->trdid, cycle ); … … 134 134 assert( (error == 0) , "cannot create <external>\n" ); 135 135 136 #if DEBUG_DEVFS_ INIT137 cycle = (uint32_t)hal_get_cycles(); 138 if( DEBUG_DEVFS_ INIT < cycle )136 #if DEBUG_DEVFS_GLOBAL_INIT 137 cycle = (uint32_t)hal_get_cycles(); 138 if( DEBUG_DEVFS_GLOBAL_INIT < cycle ) 139 139 printk("\n[%s] thread[%x,%x] created <external> inode / cycle %d\n", 140 140 __FUNCTION__, this->process->pid, this->trdid, cycle ); … … 159 159 error_t error; 160 160 161 #if DEBUG_DEVFS_LOCAL_INIT 162 uint32_t cycle = (uint32_t)hal_get_cycles(); 163 thread_t * this = CURRENT_THREAD; 164 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 165 printk("\n[%s] thread[%x,%x] enter / cycle %d\n", 166 __FUNCTION__, this->process->pid, this->trdid, cycle ); 167 #endif 168 161 169 // create "internal" directory 162 170 snprintf( node_name , 16 , "internal_%x" , local_cxy ); … … 177 185 assert( (error == 0) , "cannot create <external>\n" ); 178 186 179 #if DEBUG_DEVFS_INIT 180 uint32_t cycle = (uint32_t)hal_get_cycles(); 181 thread_t * this = CURRENT_THREAD; 182 if( DEBUG_DEVFS_INIT < cycle ) 187 #if DEBUG_DEVFS_LOCAL_INIT 188 cycle = (uint32_t)hal_get_cycles(); 189 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 183 190 printk("\n[%s] thread[%x,%x] created <%s> inode in cluster %x / cycle %d\n", 184 191 __FUNCTION__, this->process->pid, this->trdid, node_name, local_cxy, cycle ); … … 209 216 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 210 217 211 #if DEBUG_DEVFS_ INIT212 cycle = (uint32_t)hal_get_cycles(); 213 if( DEBUG_DEVFS_ INIT < cycle )218 #if DEBUG_DEVFS_LOCAL_INIT 219 cycle = (uint32_t)hal_get_cycles(); 220 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 214 221 printk("\n[%s] thread[%x,%x] created <mmc> inode in cluster %x\n", 215 222 __FUNCTION__, this->process->pid, this->trdid, local_cxy, cycle ); … … 244 251 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 245 252 246 #if DEBUG_DEVFS_ INIT247 cycle = (uint32_t)hal_get_cycles(); 248 if( DEBUG_DEVFS_ INIT < cycle )253 #if DEBUG_DEVFS_LOCAL_INIT 254 cycle = (uint32_t)hal_get_cycles(); 255 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 249 256 printk("\n[%s] thread [%x,%x] created <dma[%d]> inode in cluster %x\n", 250 257 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 277 284 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 278 285 279 #if DEBUG_DEVFS_ INIT280 cycle = (uint32_t)hal_get_cycles(); 281 if( DEBUG_DEVFS_ INIT < cycle )286 #if DEBUG_DEVFS_LOCAL_INIT 287 cycle = (uint32_t)hal_get_cycles(); 288 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 282 289 printk("\n[%s] thread[%x,%x] created <iob> inode in cluster %x\n", 283 290 __FUNCTION__, this->process->pid, this->trdid, local_cxy, cycle ); … … 310 317 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 311 318 312 #if DEBUG_DEVFS_ INIT313 cycle = (uint32_t)hal_get_cycles(); 314 if( DEBUG_DEVFS_ INIT < cycle )319 #if DEBUG_DEVFS_LOCAL_INIT 320 cycle = (uint32_t)hal_get_cycles(); 321 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 315 322 printk("\n[%s] thread[%x,%x] created <pic> inode in cluster %x\n", 316 323 __FUNCTION__, this->process->pid, this->trdid, local_cxy, cycle ); … … 345 352 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 346 353 347 #if DEBUG_DEVFS_ INIT348 cycle = (uint32_t)hal_get_cycles(); 349 if( DEBUG_DEVFS_ INIT < cycle )354 #if DEBUG_DEVFS_LOCAL_INIT 355 cycle = (uint32_t)hal_get_cycles(); 356 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 350 357 printk("\n[%s] thread[%x,%x] created <txt_rx[%d]> inode in cluster %x\n", 351 358 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 381 388 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 382 389 383 #if DEBUG_DEVFS_ INIT384 cycle = (uint32_t)hal_get_cycles(); 385 if( DEBUG_DEVFS_ INIT < cycle )390 #if DEBUG_DEVFS_LOCAL_INIT 391 cycle = (uint32_t)hal_get_cycles(); 392 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 386 393 printk("\n[%s] thread[%x,%x] created <txt_tx[%d]> inode in cluster %x\n", 387 394 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 417 424 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 418 425 419 #if DEBUG_DEVFS_ INIT420 cycle = (uint32_t)hal_get_cycles(); 421 if( DEBUG_DEVFS_ INIT < cycle )426 #if DEBUG_DEVFS_LOCAL_INIT 427 cycle = (uint32_t)hal_get_cycles(); 428 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 422 429 printk("\n[%s] thread[%x,%x] created <ioc[%d]> inode in cluster %x\n", 423 430 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 453 460 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 454 461 455 #if DEBUG_DEVFS_ INIT456 cycle = (uint32_t)hal_get_cycles(); 457 if( DEBUG_DEVFS_ INIT < cycle )462 #if DEBUG_DEVFS_LOCAL_INIT 463 cycle = (uint32_t)hal_get_cycles(); 464 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 458 465 printk("\n[%s] thread[%x,%x] created <fbf[%d]> inode in cluster %x\n", 459 466 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 489 496 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 490 497 491 #if DEBUG_DEVFS_ INIT492 cycle = (uint32_t)hal_get_cycles(); 493 if( DEBUG_DEVFS_ INIT < cycle )498 #if DEBUG_DEVFS_LOCAL_INIT 499 cycle = (uint32_t)hal_get_cycles(); 500 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 494 501 printk("\n[%s] thread[%x,%x] created <nic_rx[%d]> inode in cluster %x\n", 495 502 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); … … 525 532 hal_remote_spt( XPTR( inode_cxy , &inode_ptr->extend ) , chdev_ptr ); 526 533 527 #if DEBUG_DEVFS_ INIT528 cycle = (uint32_t)hal_get_cycles(); 529 if( DEBUG_DEVFS_ INIT < cycle )534 #if DEBUG_DEVFS_LOCAL_INIT 535 cycle = (uint32_t)hal_get_cycles(); 536 if( DEBUG_DEVFS_LOCAL_INIT < cycle ) 530 537 printk("\n[%s] thread[%x,%x] created <nic_tx[%d]> inode in cluster %x\n", 531 538 __FUNCTION__, this->process->pid, this->trdid, channel, local_cxy, cycle ); -
trunk/kernel/fs/fatfs.c
r612 r614 1064 1064 { 1065 1065 // copy the modified page to IOC device 1066 fatfs_move_page( page_xp , false);1066 fatfs_move_page( page_xp , IOC_SYNC_WRITE ); 1067 1067 1068 1068 // get the next page in FAT mapper … … 1217 1217 1218 1218 // copy the modified page to the IOC device 1219 fatfs_move_page( page_xp , false);1219 fatfs_move_page( page_xp , IOC_SYNC_WRITE ); 1220 1220 1221 1221 #if DEBUG_FATFS_ADD_DENTRY 1222 1222 cycle = (uint32_t)hal_get_cycles(); 1223 1223 if( DEBUG_FATFS_ADD_DENTRY < cycle ) 1224 printk("\n[%s] thread[%x,%x] exit / parent %s / child %s/ cycle %d\n",1224 printk("\n[%s] thread[%x,%x] exit / parent <%s> / child <%s> / cycle %d\n", 1225 1225 __FUNCTION__, this->process->pid, this->trdid, dir_name, dentry->name, cycle ); 1226 1226 #endif … … 1313 1313 1314 1314 // copy the modified page to the IOC device 1315 fatfs_move_page( page_xp , false);1315 fatfs_move_page( page_xp , IOC_SYNC_WRITE ); 1316 1316 1317 1317 // get extended pointer on page descriptor from parent directory mapper … … 1345 1345 1346 1346 // copy the modified page to the IOC device 1347 fatfs_move_page( page_xp , false);1347 fatfs_move_page( page_xp , IOC_SYNC_WRITE ); 1348 1348 1349 1349 … … 1396 1396 xptr_t base_xp; // extended pointer on page base 1397 1397 uint8_t * base; // local pointer on page base 1398 uint 32_tattr; // directory entry ATTR field1399 uint 32_tord; // directory entry ORD field1398 uint8_t attr; // directory entry ATTR field 1399 uint8_t ord; // directory entry ORD field 1400 1400 uint32_t seq; // sequence index 1401 1401 uint32_t lfn = 0; // LFN entries number … … 1422 1422 #if (DEBUG_FATFS_GET_DENTRY & 0x1) 1423 1423 if( DEBUG_FATFS_GET_DENTRY < cycle ) 1424 mapper_display_page( mapper_xp , page_id , 256 , parent_name);1424 mapper_display_page( mapper_xp , page_id , 256 ); 1425 1425 #endif 1426 1426 // scan this page until end of directory, end of page, or name found … … 1435 1435 } 1436 1436 else if ( ord == FREE_ENTRY ) // free entry => skip 1437 { 1438 offset = offset + 32; 1439 } 1440 else if ( attr == 0x28 ) // volune_id => skip 1437 1441 { 1438 1442 offset = offset + 32; … … 1577 1581 assert( (detailed == false), "detailed argument not supported/n"); 1578 1582 1579 char cname[CONFIG_VFS_MAX_NAME_LENGTH]; // name extracte r from each directoryentry1583 char cname[CONFIG_VFS_MAX_NAME_LENGTH]; // name extracted from each dentry 1580 1584 1581 1585 char lfn1[16]; // buffer for one partial cname … … 1585 1589 xptr_t base_xp; // extended pointer on page base 1586 1590 uint8_t * base; // local pointer on page base 1587 uint 32_tattr; // directory entry ATTR field1588 uint 32_tord; // directory entry ORD field1591 uint8_t attr; // directory entry ATTR field 1592 uint8_t ord; // directory entry ORD field 1589 1593 uint32_t seq; // sequence index 1590 1594 uint32_t lfn = 0; // LFN entries number … … 1609 1613 #if (DEBUG_FATFS_GET_USER_DIR & 0x1) 1610 1614 if( DEBUG_FATFS_GET_USER_DIR < cycle ) 1611 mapper_display_page( mapper_xp , page_id , 256 , inode_name);1615 mapper_display_page( mapper_xp , page_id , 256 ); 1612 1616 #endif 1613 1617 // loop on NORMAL/LFN (32 bytes) directory entries in this page … … 1625 1629 } 1626 1630 else if ( ord == FREE_ENTRY ) // free entry => skip 1631 { 1632 offset = offset + 32; 1633 } 1634 else if ( attr == 0x28 ) // volune_id => skip 1627 1635 { 1628 1636 offset = offset + 32; … … 1693 1701 if( DEBUG_FATFS_GET_USER_DIR < cycle ) 1694 1702 printk("\n[%s] thread[%x,%x] exit for inode <%s> / %d entries / cycle %d\n", 1695 __FUNCTION__, this->process->pid, this->trdid, inode_name, entries, cycle );1703 __FUNCTION__, this->process->pid, this->trdid, inode_name, dirent_id, cycle ); 1696 1704 #endif 1697 1705 … … 1756 1764 1757 1765 // move page from mapper to device 1758 error = fatfs_move_page( page_xp , false);1766 error = fatfs_move_page( page_xp , IOC_WRITE ); 1759 1767 1760 1768 if ( error ) return -1; … … 1827 1835 #endif 1828 1836 // move page from mapper to device 1829 error = fatfs_move_page( page_xp , false);1837 error = fatfs_move_page( page_xp , IOC_SYNC_WRITE ); 1830 1838 1831 1839 if ( error ) return -1; … … 2132 2140 } // end fatfs_release_inode() 2133 2141 2134 ///////////////////////////////////////// 2135 error_t fatfs_move_page( xptr_t page_xp,2136 bool_t to_mapper)2142 //////////////////////////////////////////// 2143 error_t fatfs_move_page( xptr_t page_xp, 2144 cmd_type_t cmd_type ) 2137 2145 { 2138 2146 error_t error; … … 2172 2180 2173 2181 // access device 2174 if( to_mapper ) error = dev_ioc_sync_read ( buffer , lba , 8 ); 2175 else error = dev_ioc_write( buffer , lba , 8 ); 2182 if ( cmd_type == IOC_SYNC_READ ) error = dev_ioc_sync_read ( buffer , lba , 8 ); 2183 else if( cmd_type == IOC_SYNC_WRITE ) error = dev_ioc_sync_write( buffer , lba , 8 ); 2184 else if( cmd_type == IOC_READ ) error = dev_ioc_read ( buffer , lba , 8 ); 2185 else if( cmd_type == IOC_WRITE ) error = dev_ioc_write ( buffer , lba , 8 ); 2186 else error = -1; 2176 2187 2177 2188 if( error ) return EIO; … … 2179 2190 #if (DEBUG_FATFS_MOVE_PAGE & 0x1) 2180 2191 if( DEBUG_FATFS_MOVE_PAGE < cycle ) 2181 mapper_display_page( XPTR(page_cxy , mapper_ptr) , page_id , "FAT");2192 mapper_display_page( XPTR(page_cxy , mapper_ptr) , page_id ); 2182 2193 #endif 2183 2194 … … 2186 2197 if( DEBUG_FATFS_MOVE_PAGE < cycle ) 2187 2198 { 2188 if ( to_mapper)2199 if ( (cmd_type == IOC_READ) || (cmd_type == IOC_SYNC_READ) ) 2189 2200 printk("\n[%s] thread[%x,%x] load page %d of FAT / cycle %d\n", 2190 2201 __FUNCTION__, this->process->pid, this->trdid, page_id, cycle ); … … 2230 2241 2231 2242 // access device 2232 if( to_mapper ) error = dev_ioc_sync_read ( buffer , lba , 8 ); 2233 else error = dev_ioc_write( buffer , lba , 8 ); 2243 if ( cmd_type == IOC_SYNC_READ ) error = dev_ioc_sync_read ( buffer , lba , 8 ); 2244 else if( cmd_type == IOC_SYNC_WRITE ) error = dev_ioc_sync_write( buffer , lba , 8 ); 2245 else if( cmd_type == IOC_READ ) error = dev_ioc_read ( buffer , lba , 8 ); 2246 else if( cmd_type == IOC_WRITE ) error = dev_ioc_write ( buffer , lba , 8 ); 2247 else error = -1; 2234 2248 2235 2249 if( error ) return EIO; … … 2237 2251 #if (DEBUG_FATFS_MOVE_PAGE & 0x1) 2238 2252 if( DEBUG_FATFS_MOVE_PAGE < cycle ) 2239 char string[CONFIG_VFS_MAX_NAME_LENGTH]; 2240 vfs_inode_get_name( XPTR(page_cxy , inode_ptr) , string ); 2241 mapper_display_page( XPTR(page_cxy , mapper_ptr) , page_id , string ); 2253 mapper_display_page( XPTR(page_cxy , mapper_ptr) , page_id ); 2242 2254 #endif 2243 2255 … … 2246 2258 if(DEBUG_FATFS_MOVE_PAGE < cycle) 2247 2259 { 2248 if (to_mapper)2260 if ( (cmd_type == IOC_READ) || (cmd_type == IOC_SYNC_READ) ) 2249 2261 printk("\n[%s] thread[%x,%x] load page %d of <%s> inode / cycle %d\n", 2250 2262 __FUNCTION__, this->process->pid, this->trdid, page_id, name, cycle ); -
trunk/kernel/fs/fatfs.h
r612 r614 29 29 #include <remote_queuelock.h> 30 30 #include <vfs.h> 31 #include <dev_ioc.h> 31 32 32 33 … … 365 366 * and copies from mapper to device each page marked as dirty. 366 367 * WARNING : The target <inode> cannot be a directory, because all modifications in a 367 * directory *are synchronously done on the IOC device by the two fatfs_add_dentry()368 * directory are synchronously done on the IOC device by the two fatfs_add_dentry() 368 369 * and fatfs_remove_dentry() functions. 369 370 ***************************************************************************************** … … 451 452 ***************************************************************************************** 452 453 * @ page_xp : extended pointer on page descriptor. 453 * @ to_mapper : true for device->mapper / false for mapper->device454 * @ cmd_type : IOC_READ / IOC_WRITE / IOC_SYNC_READ / IOC_SYNC_WRITE 454 455 * @ return 0 if success / return EIO if error during device access. 455 456 ****************************************************************************************/ 456 error_t fatfs_move_page( xptr_t page_xp,457 bool_t to_mapper);457 error_t fatfs_move_page( xptr_t page_xp, 458 cmd_type_t cmd_type ); 458 459 459 460 -
trunk/kernel/fs/vfs.c
r612 r614 424 424 uint32_t cycle = (uint32_t)hal_get_cycles(); 425 425 if( DEBUG_VFS_DENTRY_CREATE < cycle ) 426 printk("\n[%s] thread[%x,%x] enter for <%s> / parent_inode %x /cycle %d\n",427 __FUNCTION__, this->process->pid, this->trdid, name, parent,cycle );426 printk("\n[%s] thread[%x,%x] enter for <%s> / cycle %d\n", 427 __FUNCTION__, this->process->pid, this->trdid, name, cycle ); 428 428 #endif 429 429 … … 1946 1946 1947 1947 // display inode 1948 nolock_printk("%s %s <%s> : inum %d / %d bytes / dirty %d / cxy %x (inode %x / mapper %x)\n",1949 indent_str[indent], vfs_inode_type_str( inode_type ), name,1948 nolock_printk("%s<%s> : %s / inum %d / %d bytes / dirty %d / cxy %x / inode %x / mapper %x\n", 1949 indent_str[indent], name, vfs_inode_type_str( inode_type ), 1950 1950 inode_inum, inode_size, inode_dirty, inode_cxy, inode_ptr, mapper_ptr ); 1951 1951 … … 3191 3191 ////////////////////////////////////////////////////////////////////////////////////////// 3192 3192 3193 /////////////////////////////////////////// 3194 error_t vfs_fs_move_page( xptr_t page_xp,3195 bool_t to_mapper)3193 ////////////////////////////////////////////// 3194 error_t vfs_fs_move_page( xptr_t page_xp, 3195 cmd_type_t cmd_type ) 3196 3196 { 3197 3197 error_t error = 0; … … 3213 3213 if( fs_type == FS_TYPE_FATFS ) 3214 3214 { 3215 error = fatfs_move_page( page_xp , to_mapper);3215 error = fatfs_move_page( page_xp , cmd_type ); 3216 3216 } 3217 3217 else if( fs_type == FS_TYPE_RAMFS ) -
trunk/kernel/fs/vfs.h
r612 r614 41 41 #include <ramfs.h> 42 42 #include <devfs.h> 43 #include <dev_ioc.h> 43 44 44 45 /**** Forward declarations ***/ … … 408 409 * It must called by a local thread. Use the RPC_DENTRY_CREATE if client thread is remote. 409 410 ****************************************************************************************** 410 * @ fs_type : file system type.411 * @ name : directory entry file/dir name.411 * @ fs_type : [in] file system type. 412 * @ name : [in] directory entry file/dir name. 412 413 * @ dentry_xp : [out] buffer for extended pointer on created dentry. 413 414 * @ return 0 if success / return ENOMEM or EINVAL if error. … … 421 422 * allocated to the dentry descriptor. 422 423 * It must be executed by a thread running in the cluster containing the dentry. 423 * Use the rpc_vfs_dentry_destroy_client() functionif required.424 * Use the RPC_DENTRY_DESTROY if required. 424 425 ****************************************************************************************** 425 * @ dentry : local pointer on dentry descriptor.426 * @ dentry : [in] local pointer on dentry descriptor. 426 427 *****************************************************************************************/ 427 428 void vfs_dentry_destroy( vfs_dentry_t * dentry ); … … 875 876 876 877 /****************************************************************************************** 878 * This function makes the I/O operation to move one page identified by the <page_xp> 879 * argument to/from the IOC device from/to the mapper, as defined by <cmd_type>. 880 * Depending on the file system type, it calls the proper, FS specific function. 881 * It is used in case of MISS on the mapper, or when a dirty page in the mapper must 882 * be updated in the File System. 883 * The mapper pointer is obtained from the page descriptor. 884 * It can be executed by any thread running in any cluster. 885 * This function does NOT take any lock. 886 ****************************************************************************************** 887 * @ page_xp : extended pointer on page descriptor (for mapper and page_id). 888 * @ cmd_type : IOC_READ / IOC_WRITE / IOC_SYNC_READ / IOC_SYNC_WRITE 889 * @ returns 0 if success / return -1 if device access failure. 890 *****************************************************************************************/ 891 error_t vfs_fs_move_page( xptr_t page_xp, 892 cmd_type_t cmd_type ); 893 894 /****************************************************************************************** 877 895 * This function updates the mapper associated to a directory inode identified by the 878 896 * <parent> argument, to add a new entry identified by the <dentry> argument. … … 1032 1050 error_t vfs_fs_release_inode( xptr_t inode_xp ); 1033 1051 1034 /******************************************************************************************1035 * This function makes the I/O operation to move one page identified by the <page_xp>1036 * argument to/from the IOC device from/to the mapper, as defined by <to_mapper>.1037 * Depending on the file system type, it calls the proper, FS specific function.1038 * It is used in case of MISS on the mapper, or when a dirty page in the mapper must1039 * be updated in the File System.1040 * The mapper pointer is obtained from the page descriptor.1041 * It can be executed by any thread running in any cluster.1042 * This function does NOT take any lock.1043 ******************************************************************************************1044 * @ page_xp : extended pointer on the page descriptor.1045 * @ to_mapper : transfer direction.1046 * @ returns 0 if success / return -1 if device access failure.1047 *****************************************************************************************/1048 error_t vfs_fs_move_page( xptr_t page_xp,1049 bool_t to_mapper );1050 1051 1052 1052 1053 #endif /* _VFS_H_ */
Note: See TracChangeset
for help on using the changeset viewer.