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 + -
显示快捷键?