netfs.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 153 行
H
153 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Fri Nov 11 00:24:22 2005
*
*******************************************************************/
#ifndef _NETFS_H_
#define _NETFS_H_
#define NETFS_LOG(level, args...) AVOS_LOG(0, level, "<NETFS> ", ##args)
#define NETFS_LOG_NOTI(args...) NETFS_LOG(DBGHLP_LOG_NETFS, ##args)
#define NETFS_LOG_INFO(args...) NETFS_LOG(DBGHLP_LOG_NETFS_MORE, ##args)
#define NETFS_DEFAULT_BLOCK_SHIFT 11
#define NETFS_DEFAULT_BLOCK_SIZE (1<<NETFS_DEFAULT_BLOCK_SHIFT)
#define DEV_BSIZE NETFS_DEFAULT_BLOCK_SIZE
#define NETFS_RESOURCE_CHECK_TIME 20
#define OBJ_INFO_REQ_MINIMUM_NUM 64
typedef struct netfs_primary_volumn_info_s
{
dev_t dev;
}netfs_primary_volumn_info_t;
typedef struct
{
netdisk_app_interrupt_cb_t fs_interrupt_cb;
netdisk_app_interrupt_cb_t file_rdwr_interrupt_cb;
}app_interrupt_cbs_t;
/*
* This structure identifies the instance of the filesystem on the NETFS
* ("netfs-file") level.
*/
typedef struct netfs_fs_info_s
{
Chain_Control *chain;
netfs_primary_volumn_info_t vol;
avfs_filesystem_file_handlers_r *directory_handlers; /*
* a set of routines
* that handles the
* nodes of directory
* type
*/
avfs_filesystem_file_handlers_r *file_handlers; /*
* a set of routines
* that handles the
* nodes of file
* type
*/
avfs_id vol_sema; /*
* semaphore
* associated with
* the volume
*/
avfs_id vol_resource; /*
* semaphore
* associated with
* the volume
*/
INT32U timeout;
OS_EVENT *operate_sem;
char* direntry_buffer;
NetDisk_Dev_Info_t* dev_info;
app_interrupt_cbs_t app_interrupt_cbs;
struct netdisk_obj_handlers_r obj_handlers;
char* entry_buffer;
int tmp_offset;
int tmp_size;
char tmp_obj_id_len;
char tmp_obj_id[MAX_OBJ_ID_LEN];
}netfs_fs_info_t;
typedef avfs_filesystem_node_types_t netfs_file_type_t;
typedef struct Path_Link_{
char object_id_len;
char *object_id;
unsigned16 ref_pos;
struct Path_Link_* parent_link;
}Path_Link_t;
/*
* descriptor of a netfs-file
*
*/
typedef struct netfs_file_fd_s
{
Chain_Node link; /* should be at the start of this structure */
avfs_libio_t* iop;
unsigned16 links_num;
netfs_file_type_t type;
int size;
Path_Link_t* parent_link;
void* file_handle_internal;
char object_id_len;
char object_id[MAX_OBJ_ID_LEN];
char name_len;
char name[NAME_MAX+1];
char lname_len;
char lname[LNAME_MAX+2];
unsigned16 ref_pos; // index in parent dir
unsigned16 child_num; // for dir only
char dirty;
} netfs_file_fd_t;
typedef enum netfs_token_types_s
{
NETFS_NO_MORE_PATH,
NETFS_CURRENT_DIR,
NETFS_UP_DIR,
NETFS_NAME,
NETFS_INVALID_TOKEN
} netfs_token_types_t;
#ifndef RC_OK
#define RC_OK 0x00000000
#endif
#define NETFS_NAME_NOT_FOUND_ERR 0xDD000001
#define NETFS_VOLUME_SEMAPHORE_TIMEOUT AVFS_NO_TIMEOUT
#ifndef set_errno_and_return_minus_one
#define set_errno_and_return_minus_one avfs_set_errno_and_return_minus_one
#endif /* set_errno_and_return_minus_one */
extern avfs_filesystem_operations_table netfs_ops;
extern avfs_filesystem_file_handlers_r netfs_dir_handlers;
extern avfs_filesystem_file_handlers_r netfs_file_handlers;
#define NETFS_NAME_MAX 256
#define NETFS_DOT_NAME ". " /* ".", padded to NETFS_NAME chars */
#define NETFS_DOTDOT_NAME ".. " /* "..", padded to NETFS_NAME chars */
extern avfs_filesystem_operations_table netfs_ops ;
#define netfs_is_separator(_ch) avfs_filesystem_is_separator(_ch)
#endif /* _NETFS_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?