TuyaOS
tkl_storage.h
浏览该文件的文档.
1
11#ifndef __TKL_STORAGE_H__
12#define __TKL_STORAGE_H__
13
14#include "tuya_cloud_types.h"
15
16#ifdef __cplusplus
17 extern "C" {
18#endif
19
20/* common filesystem name list */
21#define FSTP_FAT32 "vfat" // fat32
22#define FSTP_EXT34 "ext4"
23#define FSTP_XFS "xfs"
24
25/* common storage bus type list */
26#define BUSTP_USB "usb"
27#define BUSTP_SATA "sata"
28#define BUSTP_SDIO "sdcard"
29
30#define MAX_PATH_LEN 256
31#define MAX_PART_NUM 10
32#define MAX_DEVICE_NUM 10
33#define MAX_FSTP_LEN 16
34
35/* for disk partition add or delete */
36#define PART_ADD 1
37#define PART_DEL 2
38
39#define DEVICE_HOTPLUG_ADD 1
40#define DEVICE_HOTPLUG_DEL 0
41
42typedef struct {
43 CHAR_T dev_name[MAX_PATH_LEN]; /* device node name, eg. /dev/sda1 */
44 CHAR_T fs_type[MAX_FSTP_LEN]; /* filesystem type. refer to common filesystem name list */
45 UINT64_T size; /* total KB */
46 UINT64_T used; /* used KB */
47 UINT64_T avail; /* available KB */
48 CHAR_T mounted_on[MAX_PATH_LEN]; /* mount point */
50
51
52typedef struct {
53 CHAR_T dev_name[MAX_PATH_LEN]; /* device node name, eg. /dev/sda1 */
54 UINT_T part_id; /* partition index */
55 UINT64_T start; /* start position, KB, unsigned long long */
56 UINT64_T end; /* end position, KB */
57 UINT64_T size; /* partition size, KB */
58 CHAR_T fs_type[MAX_FSTP_LEN]; /* filesystem type, eg. ext4 */
59 CHAR_T part_label[16]; /* partition label */
60 CHAR_T flags[16]; /* partition flags, eg. bios_grub */
62
63
64typedef struct {
65 UINT_T slot; /* hardware slot number */
66 UINT_T major; /* device major id */
67 UINT_T minor; /* device minor id */
68 CHAR_T bus_type[8]; /* interface type, eg. usb sata sd */
69 CHAR_T model[16]; /* storage model, optional */
70 CHAR_T dev_name[MAX_PATH_LEN]; /* device node, eg. /dev/sda */
71 UINT64_T capacity; /* total size, KB */
72 UINT_T sect_size; /* sector size, bytes */
73 CHAR_T part_table_type[16]; /* partition table type, eg. gpt mbr private */
74 CHAR_T dev_id[64]; /* disk identifier, eg. 330BD448-E0FC-46ED-BC7E-67D75DDA5572 */
76
77typedef enum {
78 EVT_HOTPLUG,
79 EVT_FS_ERR, // eg. ro
80} TKL_STORAGE_EVT_MSGTP;
81
82typedef struct {
83 CHAR_T bus_type[8];
84 CHAR_T dev_name[MAX_PATH_LEN];
85 TKL_STORAGE_EVT_MSGTP type;
86 union {
87 INT_T i;
88 CHAR_T s[64];
89 } msg;
91
92
93/* progress bar in case of long time operations */
94typedef VOID (*TKL_STORAGE_PROGRESS_CB)(INT_T progress, VOID *user_ctx);
95
96/* common storage device event */
97typedef VOID (*TKL_STORAGE_EVENT_CB)(TKL_STORAGE_EVENT_MSG *msg, VOID *user_ctx);
98
99/* return badblock index in blk_idx */
100typedef VOID (*TKL_STORAGE_BADBLK_CB)(ULONG_T blk_idx, VOID *user_ctx);
101
102
109OPERATE_RET tkl_storage_get_internal_dir(CHAR_T path[MAX_PATH_LEN]);
110
111
119OPERATE_RET tkl_storage_df(CHAR_T *mount_point, TKL_STORAGE_DF_T *df);
120
121
128OPERATE_RET tkl_storage_get_device_info(CHAR_T *dev_name, TKL_STORAGE_DEVICE_INFO_T *list);
129
130
139
140
149OPERATE_RET tkl_storage_get_part_list(CHAR_T *dev_name, TKL_STORAGE_PART_INFO_T *list, INT_T num);
150
151
164 OPERATE_RET tkl_storage_make_part(CHAR_T *part_name, CHAR_T *part_type,
165 CHAR_T *fs_type, BOOL_T isadd, UINT_T part_index, LONG_T start, LONG_T end);
166
177 OPERATE_RET tkl_storage_mkfs(CHAR_T *fs_type, CHAR_T *fs_dev, CHAR_T *parm,
178 TKL_STORAGE_PROGRESS_CB cb, VOID *user_ctx);
179
190OPERATE_RET tkl_storage_mount(CHAR_T *source, CHAR_T *target,
191 CHAR_T *fs_type, ULONG_T flags, VOID *data);
192
193
201OPERATE_RET tkl_storage_umount(CHAR_T *target, INT_T flags);
202
203
212OPERATE_RET tkl_storage_loop_event(TKL_STORAGE_EVENT_CB event_cb, VOID *user_ctx);
213
214
226 OPERATE_RET tkl_storage_fsck(CHAR_T *blk_dev, CHAR_T *fs_type, CHAR_T *parm, INT_T flags,
227 TKL_STORAGE_PROGRESS_CB cb, VOID *user_ctx);
228
229
238OPERATE_RET tkl_storage_ioctl(CHAR_T *dev_name, ULONG_T request, VOID *args);
239
240
241/* medium-specific interfaces */
242
251OPERATE_RET tkl_storage_check_badblocks(CHAR_T *dev_name, TKL_STORAGE_BADBLK_CB cb, VOID *user_ctx);
252
253#ifdef __cplusplus
254}
255#endif
256
257#endif
Definition: tkl_storage.h:64
Definition: tkl_storage.h:42
Definition: tkl_storage.h:82
Definition: tkl_storage.h:52
OPERATE_RET tkl_storage_get_part_list(CHAR_T *dev_name, TKL_STORAGE_PART_INFO_T *list, INT_T num)
get partition info
OPERATE_RET tkl_storage_mkfs(CHAR_T *fs_type, CHAR_T *fs_dev, CHAR_T *parm, TKL_STORAGE_PROGRESS_CB cb, VOID *user_ctx)
partiton format, build filesystem
OPERATE_RET tkl_storage_fsck(CHAR_T *blk_dev, CHAR_T *fs_type, CHAR_T *parm, INT_T flags, TKL_STORAGE_PROGRESS_CB cb, VOID *user_ctx)
check and repair a filesystem
OPERATE_RET tkl_storage_get_device_info(CHAR_T *dev_name, TKL_STORAGE_DEVICE_INFO_T *list)
get one device info
OPERATE_RET tkl_storage_df(CHAR_T *mount_point, TKL_STORAGE_DF_T *df)
report filesystem disk space usage
OPERATE_RET tkl_storage_loop_event(TKL_STORAGE_EVENT_CB event_cb, VOID *user_ctx)
loop storage event, eg. hotplug will not return except an error occured.
OPERATE_RET tkl_storage_get_internal_dir(CHAR_T path[256])
get internal r/w dir
OPERATE_RET tkl_storage_ioctl(CHAR_T *dev_name, ULONG_T request, VOID *args)
scsi generic ioctl
OPERATE_RET tkl_storage_get_device_list(TKL_STORAGE_DEVICE_INFO_T *list, INT_T num)
get block device list
OPERATE_RET tkl_storage_umount(CHAR_T *target, INT_T flags)
umount a filesystem partition. refer to umount system call
OPERATE_RET tkl_storage_make_part(CHAR_T *part_name, CHAR_T *part_type, CHAR_T *fs_type, BOOL_T isadd, UINT_T part_index, LONG_T start, LONG_T end)
make partition. refer to parted/fdisk
OPERATE_RET tkl_storage_check_badblocks(CHAR_T *dev_name, TKL_STORAGE_BADBLK_CB cb, VOID *user_ctx)
check bad blocks
OPERATE_RET tkl_storage_mount(CHAR_T *source, CHAR_T *target, CHAR_T *fs_type, ULONG_T flags, VOID *data)
mount a filesystem partition. refer to mount system call