Changeset 69596 in vbox
- Timestamp:
- Nov 6, 2017 1:02:12 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 118948
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/fs/fatvfs.cpp
r69595 r69596 123 123 RTLISTANCHOR ListParts; 124 124 } RTFSFATCHAIN; 125 /** Pointer to a FAT chain. */ 125 126 typedef RTFSFATCHAIN *PRTFSFATCHAIN; 127 /** Pointer to a const FAT chain. */ 126 128 typedef RTFSFATCHAIN const *PCRTFSFATCHAIN; 127 129 128 130 129 131 /** 130 * FAT file system object (common part to files and dirs ).132 * FAT file system object (common part to files and dirs (shared)). 131 133 */ 132 134 typedef struct RTFSFATOBJ … … 160 162 bool fMaybeDirtyDirEnt; 161 163 } RTFSFATOBJ; 164 /** Poitner to a FAT file system object. */ 162 165 typedef RTFSFATOBJ *PRTFSFATOBJ; 163 166 167 /** 168 * Shared FAT file data. 169 */ 164 170 typedef struct RTFSFATFILESHRD 165 171 { … … 167 173 RTFSFATOBJ Core; 168 174 } RTFSFATFILESHRD; 175 /** Pointer to shared FAT file data. */ 169 176 typedef RTFSFATFILESHRD *PRTFSFATFILESHRD; 170 177 171 178 179 /** 180 * Per handle data for a FAT file. 181 */ 172 182 typedef struct RTFSFATFILE 173 183 { … … 177 187 uint32_t offFile; 178 188 } RTFSFATFILE; 189 /** Pointer to the per handle data of a FAT file. */ 179 190 typedef RTFSFATFILE *PRTFSFATFILE; 180 191 181 192 182 193 /** 183 * FAT directory.194 * FAT shared directory structure. 184 195 * 185 196 * We work directories in one of two buffering modes. If there are few entries … … 242 253 } u; 243 254 } RTFSFATDIRSHRD; 244 /** Pointer to a FAT directory instance. */255 /** Pointer to a shared FAT directory instance. */ 245 256 typedef RTFSFATDIRSHRD *PRTFSFATDIRSHRD; 246 257 247 258 248 259 /** 249 * FAT directory.260 * The per handle FAT directory data. 250 261 */ 251 262 typedef struct RTFSFATDIR … … 256 267 uint32_t offDir; 257 268 } RTFSFATDIR; 258 /** Pointer to a FAT directory instance. */269 /** Pointer to a per handle FAT directory data. */ 259 270 typedef RTFSFATDIR *PRTFSFATDIR; 260 271 … … 387 398 /** The size of the root directory, rounded up to the nearest sector size. */ 388 399 uint32_t cbRootDir; 389 /** The root directory instance data. */400 /** The root directory data (shared). */ 390 401 PRTFSFATDIRSHRD pRootDir; 391 402 … … 1566 1577 1567 1578 /** 1568 * @interface_method_impl{RTVFSOBJOPS,pfnClose}1569 */1570 static DECLCALLBACK(int) rtFsFatFile_Close(void *pvThis)1571 {1572 PRTFSFATFILE pThis = (PRTFSFATFILE)pvThis;1573 LogFlow(("rtFsFatFile_Close(%p/%p)\n", pThis, pThis->pShared));1574 1575 PRTFSFATFILESHRD pShared = pThis->pShared;1576 pThis->pShared = NULL;1577 1578 int rc = VINF_SUCCESS;1579 if (pShared)1580 {1581 if (ASMAtomicDecU32(&pShared->Core.cRefs) == 0)1582 {1583 LogFlow(("rtFsFatFile_Close: Destroying shared structure %p\n", pShared));1584 rc = rtFsFatObj_Close(&pShared->Core);1585 RTMemFree(pShared);1586 }1587 else1588 rc = rtFsFatObj_FlushMetaData(&pShared->Core);1589 }1590 return rc;1591 }1592 1593 1594 /**1595 1579 * Worker for rtFsFatFile_QueryInfo and rtFsFatDir_QueryInfo 1596 1580 */ … … 1640 1624 1641 1625 /** 1626 * Worker for rtFsFatFile_SetMode and rtFsFatDir_SetMode. 1627 */ 1628 static int rtFsFatObj_SetMode(PRTFSFATOBJ pThis, RTFMODE fMode, RTFMODE fMask) 1629 { 1630 #if 0 1631 if (fMask != ~RTFS_TYPE_MASK) 1632 { 1633 fMode |= ~fMask & ObjInfo.Attr.fMode; 1634 } 1635 #else 1636 RT_NOREF(pThis, fMode, fMask); 1637 return VERR_NOT_IMPLEMENTED; 1638 #endif 1639 } 1640 1641 1642 /** 1643 * Worker for rtFsFatFile_SetTimes and rtFsFatDir_SetTimes. 1644 */ 1645 static int rtFsFatObj_SetTimes(PRTFSFATOBJ pThis, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, 1646 PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime) 1647 { 1648 #if 0 1649 PRTFSFATFILE pThis = (PRTFSFATFILE)pvThis; 1650 #else 1651 RT_NOREF(pThis, pAccessTime, pModificationTime, pChangeTime, pBirthTime); 1652 return VERR_NOT_IMPLEMENTED; 1653 #endif 1654 } 1655 1656 1657 1658 1659 /** 1660 * @interface_method_impl{RTVFSOBJOPS,pfnClose} 1661 */ 1662 static DECLCALLBACK(int) rtFsFatFile_Close(void *pvThis) 1663 { 1664 PRTFSFATFILE pThis = (PRTFSFATFILE)pvThis; 1665 LogFlow(("rtFsFatFile_Close(%p/%p)\n", pThis, pThis->pShared)); 1666 1667 PRTFSFATFILESHRD pShared = pThis->pShared; 1668 pThis->pShared = NULL; 1669 1670 int rc = VINF_SUCCESS; 1671 if (pShared) 1672 { 1673 if (ASMAtomicDecU32(&pShared->Core.cRefs) == 0) 1674 { 1675 LogFlow(("rtFsFatFile_Close: Destroying shared structure %p\n", pShared)); 1676 rc = rtFsFatObj_Close(&pShared->Core); 1677 RTMemFree(pShared); 1678 } 1679 else 1680 rc = rtFsFatObj_FlushMetaData(&pShared->Core); 1681 } 1682 return rc; 1683 } 1684 1685 1686 /** 1642 1687 * @interface_method_impl{RTVFSOBJOPS,pfnQueryInfo} 1643 1688 */ … … 1647 1692 return rtFsFatObj_QueryInfo(&pThis->pShared->Core, pObjInfo, enmAddAttr); 1648 1693 } 1649 1650 1694 1651 1695 … … 1949 1993 * @interface_method_impl{RTVFSOBJSETOPS,pfnMode} 1950 1994 */ 1951 static DECLCALLBACK(int) rtFsFatObj_SetMode(void *pvThis, RTFMODE fMode, RTFMODE fMask) 1952 { 1953 #if 0 1995 static DECLCALLBACK(int) rtFsFatFile_SetMode(void *pvThis, RTFMODE fMode, RTFMODE fMask) 1996 { 1954 1997 PRTFSFATFILE pThis = (PRTFSFATFILE)pvThis; 1955 if (fMask != ~RTFS_TYPE_MASK) 1956 { 1957 fMode |= ~fMask & ObjInfo.Attr.fMode; 1958 } 1959 #else 1960 RT_NOREF(pvThis, fMode, fMask); 1961 return VERR_NOT_IMPLEMENTED; 1962 #endif 1998 return rtFsFatObj_SetMode(&pThis->pShared->Core, fMode, fMask); 1963 1999 } 1964 2000 … … 1967 2003 * @interface_method_impl{RTVFSOBJSETOPS,pfnSetTimes} 1968 2004 */ 1969 static DECLCALLBACK(int) rtFsFatObj_SetTimes(void *pvThis, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, 1970 PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime) 1971 { 1972 #if 0 2005 static DECLCALLBACK(int) rtFsFatFile_SetTimes(void *pvThis, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, 2006 PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime) 2007 { 1973 2008 PRTFSFATFILE pThis = (PRTFSFATFILE)pvThis; 1974 #else 1975 RT_NOREF(pvThis, pAccessTime, pModificationTime, pChangeTime, pBirthTime); 1976 return VERR_NOT_IMPLEMENTED; 1977 #endif 2009 return rtFsFatObj_SetTimes(&pThis->pShared->Core, pAccessTime, pModificationTime, pChangeTime, pBirthTime); 1978 2010 } 1979 2011 … … 1982 2014 * @interface_method_impl{RTVFSOBJSETOPS,pfnSetOwner} 1983 2015 */ 1984 static DECLCALLBACK(int) rtFsFat Obj_SetOwner(void *pvThis, RTUID uid, RTGID gid)2016 static DECLCALLBACK(int) rtFsFatFile_SetOwner(void *pvThis, RTUID uid, RTGID gid) 1985 2017 { 1986 2018 RT_NOREF(pvThis, uid, gid); … … 2068 2100 RTVFSOBJSETOPS_VERSION, 2069 2101 RT_OFFSETOF(RTVFSFILEOPS, Stream.Obj) - RT_OFFSETOF(RTVFSFILEOPS, ObjSet), 2070 rtFsFat Obj_SetMode,2071 rtFsFat Obj_SetTimes,2072 rtFsFat Obj_SetOwner,2102 rtFsFatFile_SetMode, 2103 rtFsFatFile_SetTimes, 2104 rtFsFatFile_SetOwner, 2073 2105 RTVFSOBJSETOPS_VERSION 2074 2106 }, … … 3488 3520 3489 3521 /** 3522 * @interface_method_impl{RTVFSOBJSETOPS,pfnMode} 3523 */ 3524 static DECLCALLBACK(int) rtFsFatDir_SetMode(void *pvThis, RTFMODE fMode, RTFMODE fMask) 3525 { 3526 PRTFSFATDIR pThis = (PRTFSFATDIR)pvThis; 3527 return rtFsFatObj_SetMode(&pThis->pShared->Core, fMode, fMask); 3528 } 3529 3530 3531 /** 3532 * @interface_method_impl{RTVFSOBJSETOPS,pfnSetTimes} 3533 */ 3534 static DECLCALLBACK(int) rtFsFatDir_SetTimes(void *pvThis, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, 3535 PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime) 3536 { 3537 PRTFSFATDIR pThis = (PRTFSFATDIR)pvThis; 3538 return rtFsFatObj_SetTimes(&pThis->pShared->Core, pAccessTime, pModificationTime, pChangeTime, pBirthTime); 3539 } 3540 3541 3542 /** 3543 * @interface_method_impl{RTVFSOBJSETOPS,pfnSetOwner} 3544 */ 3545 static DECLCALLBACK(int) rtFsFatDir_SetOwner(void *pvThis, RTUID uid, RTGID gid) 3546 { 3547 RT_NOREF(pvThis, uid, gid); 3548 return VERR_NOT_SUPPORTED; 3549 } 3550 3551 3552 /** 3490 3553 * @interface_method_impl{RTVFSOBJOPS,pfnTraversalOpen} 3491 3554 */ … … 3738 3801 RTVFSOBJSETOPS_VERSION, 3739 3802 RT_OFFSETOF(RTVFSDIROPS, Obj) - RT_OFFSETOF(RTVFSDIROPS, ObjSet), 3740 rtFsFat Obj_SetMode,3741 rtFsFat Obj_SetTimes,3742 rtFsFat Obj_SetOwner,3803 rtFsFatDir_SetMode, 3804 rtFsFatDir_SetTimes, 3805 rtFsFatDir_SetOwner, 3743 3806 RTVFSOBJSETOPS_VERSION 3744 3807 },
Note:
See TracChangeset
for help on using the changeset viewer.