1 /* 2 * Copyright (c) 2022-2022 Huawei Device Co., Ltd. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without modification, 5 * are permitted provided that the following conditions are met: 6 * 7 * 1. Redistributions of source code must retain the above copyright notice, this list of 8 * conditions and the following disclaimer. 9 * 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 * of conditions and the following disclaimer in the documentation and/or other materials 12 * provided with the distribution. 13 * 14 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 15 * to endorse or promote products derived from this software without specific prior written 16 * permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 25 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 27 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef _VFS_MOUNT_H_ 32 #define _VFS_MOUNT_H_ 33 34 #include "sys/statfs.h" 35 #include "los_compiler.h" 36 37 #ifdef __cplusplus 38 #if __cplusplus 39 extern "C" { 40 #endif /* __cplusplus */ 41 #endif /* __cplusplus */ 42 43 struct FsMap; 44 struct MountPoint; 45 46 struct MountOps { 47 int (*mount)(struct MountPoint *mp, unsigned long mountflags, 48 const void *data); 49 int (*umount)(struct MountPoint *mp); 50 int (*umount2)(struct MountPoint *mp, int flag); 51 int (*statfs)(const char *path, struct statfs *buf); 52 }; 53 54 struct MountPoint { 55 struct FsMap *mFs; /* file system info */ 56 struct MountPoint *mNext; /* point to next mount point */ 57 const char *mPath; /* target path, /system, /usr, etc. */ 58 const char *mDev; /* device, "emmc0p0", "emmc0p1", etc. */ 59 UINT32 mRefs; /* reference to mount point */ 60 void *mData; /* specific file system handle */ 61 BOOL mWriteEnable; /* writable flag */ 62 }; 63 64 extern struct MountPoint *g_mountPoints; 65 #define LOS_MP_FOR_EACH_ENTRY(prev) \ 66 for (prev = g_mountPoints; prev != NULL; prev = prev->mNext) 67 68 struct MountPoint *VfsMpFind(const char *path, const char **pathInMp); 69 70 #ifdef __cplusplus 71 #if __cplusplus 72 } 73 #endif /* __cplusplus */ 74 #endif /* __cplusplus */ 75 76 #endif /* _VFS_MOUNT_H_ */ 77