lfs_api.h 3.5 KB
Newer Older
L
li_zan 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
/*
 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this list of
 *    conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
 *    of conditions and the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without specific prior written
 *    permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

L
li_zan 已提交
32 33 34
#ifndef _LFS_API_H_
#define _LFS_API_H_

L
li_zan 已提交
35 36
#include "bits/alltypes.h"
#include "sys/stat.h"
L
li_zan 已提交
37 38 39 40

#include "dirent.h"
#include "lfs.h"
#include "lfs_util.h"
L
li_zan 已提交
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
#include "memory.h"
#include "pthread.h"

#define INVALID_FD (-1)

typedef unsigned mode_t;

#ifndef VFS_ERROR
#define VFS_ERROR (-1)
#endif

#ifndef VFS_OK
#define VFS_OK  0
#endif

typedef struct {
L
li_zan 已提交
57
    uint8_t useFlag;
L
li_zan 已提交
58
    const char *pathName;
L
li_zan 已提交
59
    lfs_file_t file;
L
li_zan 已提交
60 61 62
} LittleFsHandleStruct;

typedef struct {
L
li_zan 已提交
63
    struct FileOps *fsVops;
L
li_zan 已提交
64 65 66
} FileOpInfo;

typedef struct {
L
li_zan 已提交
67 68
    uint8_t useFlag;
    lfs_dir_t dir;
L
li_zan 已提交
69 70 71 72
} FileDirInfo;

#define LITTLE_FS_MAX_OPEN_FILES 100
#define LITTLE_FS_STANDARD_NAME_LENGTH 50
L
li_zan 已提交
73
#define LITTLE_FS_MAX_NAME_LEN 255
L
li_zan 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86 87

#define MAX_DEF_BUF_NUM 21
#define MAX_BUFFER_LEN 100
#define MAX_WRITE_FILE_LEN 500
#define MAX_READ_FILE_LEN 500

#ifndef LFS_MAX_OPEN_DIRS
#define LFS_MAX_OPEN_DIRS 10
#endif

LittleFsHandleStruct *GetFreeFd(int *fd);

int InitMountInfo(const char *fileSystemType, const struct MountOps *fsMops);
int LfsMount(const char *source, const char *target, const char *fileSystemType, unsigned long mountflags,
L
li_zan 已提交
88
    const void *data);
L
li_zan 已提交
89 90 91 92 93 94 95

int LfsUmount(const char *target);
int LfsUnlink(const char *fileName);
int LfsMkdir(const char *dirName, mode_t mode);
int LfsRmdir(const char *dirName);
DIR *LfsOpendir(const char *dirName);
struct dirent *LfsReaddir(DIR *dir);
L
li_zan 已提交
96
int LfsClosedir(const DIR *dir);
L
li_zan 已提交
97
int LfsOpen(const char *pathName, int openFlag, int mode);
L
li_zan 已提交
98 99 100 101 102 103 104 105 106
int LfsRead(int fd, void *buf, unsigned int len);
int LfsWrite(int fd, const void *buf, unsigned int len);
int LfsSeek(int fd, off_t offset, int whence);
int LfsClose(int fd);
int LfsRename(const char *oldName, const char *newName);
int LfsStat(const char *path, struct stat *buf);
int LfsFsync(int fd);

FileOpInfo GetFsOpInfo(void);
L
li_zan 已提交
107
const struct FsMap *MountFindfs(const char *filesystemtype);
L
li_zan 已提交
108

L
li_zan 已提交
109
#endif /* _LFS_API_H_ */
L
li_zan 已提交
110