📄 fileio.h
字号:
#ifndef CYGONCE_FILEIO_H#define CYGONCE_FILEIO_H//=============================================================================//// fileio.h//// Fileio header////=============================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos is distributed in the hope that it will be useful, but WITHOUT ANY// WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.// at http://sources.redhat.com/ecos/ecos-license/// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s): nickg// Contributors: nickg// Date: 2000-05-25// Purpose: Fileio header// Description: This header contains the external definitions of the general file// IO subsystem for POSIX and EL/IX compatability.// // Usage:// #include <fileio.h>// ...// ////####DESCRIPTIONEND####////=============================================================================//#include <pkgconf/hal.h>//#include <pkgconf/io_fileio.h>#include "cyg_type.h"//#include <cyg/hal/hal_tables.h>#include <stddef.h> // NULL, size_t//#include <limits.h>#include "systypes.h"//#include <fcntl.h>#include "stat.h"//=============================================================================// forward definitionsstruct cyg_mtab_entry;typedef struct cyg_mtab_entry cyg_mtab_entry;struct cyg_fstab_entry;typedef struct cyg_fstab_entry cyg_fstab_entry;struct CYG_FILEOPS_TAG;typedef struct CYG_FILEOPS_TAG cyg_fileops;struct CYG_FILE_TAG;typedef struct CYG_FILE_TAG cyg_file;struct CYG_IOVEC_TAG;typedef struct CYG_IOVEC_TAG cyg_iovec;struct CYG_UIO_TAG;typedef struct CYG_UIO_TAG cyg_uio;struct CYG_SELINFO_TAG;typedef struct CYG_SELINFO_TAG cyg_selinfo;//=============================================================================// Directory pointertypedef CYG_ADDRWORD cyg_dir;#define CYG_DIR_NULL 0//=============================================================================// Filesystem table entrytypedef int cyg_fsop_mount ( cyg_fstab_entry *fste, cyg_mtab_entry *mte );typedef int cyg_fsop_umount ( cyg_mtab_entry *mte );typedef int cyg_fsop_open ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, int mode, cyg_file *fte );typedef int cyg_fsop_unlink ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );typedef int cyg_fsop_mkdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );typedef int cyg_fsop_rmdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name );typedef int cyg_fsop_rename ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1, cyg_dir dir2, const char *name2 );typedef int cyg_fsop_link ( cyg_mtab_entry *mte, cyg_dir dir1, const char *name1, cyg_dir dir2, const char *name2, int type );typedef int cyg_fsop_opendir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, cyg_file *fte );typedef int cyg_fsop_chdir ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, cyg_dir *dir_out );typedef int cyg_fsop_stat ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, struct stat *buf);typedef int cyg_fsop_getinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, int key, void *buf, int len );typedef int cyg_fsop_setinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, int key, void *buf, int len );struct cyg_fstab_entry{ const char *name; // filesystem name CYG_ADDRWORD data; // private data value cyg_uint32 syncmode; // synchronization mode cyg_fsop_mount *mount; cyg_fsop_umount *umount; cyg_fsop_open *open; cyg_fsop_unlink *unlink; cyg_fsop_mkdir *mkdir; cyg_fsop_rmdir *rmdir; cyg_fsop_rename *rename; cyg_fsop_link *link; cyg_fsop_opendir *opendir; cyg_fsop_chdir *chdir; cyg_fsop_stat *stat; cyg_fsop_getinfo *getinfo; cyg_fsop_setinfo *setinfo;} CYG_HAL_TABLE_TYPE;//-----------------------------------------------------------------------------// Keys for getinfo() and setinfo()#define FS_INFO_CONF 1 /* pathconf() */#define FS_INFO_ACCESS 2 /* access() */#define FS_INFO_GETCWD 3 /* getcwd() *///-----------------------------------------------------------------------------// Types for link()#define CYG_FSLINK_HARD 1 /* form a hard link */#define CYG_FSLINK_SOFT 2 /* form a soft link *///-----------------------------------------------------------------------------// getinfo() and setinfo() buffers structures.struct cyg_getcwd_info{ char *buf; /* buffer for cwd string */ size_t size; /* size of buffer */};//-----------------------------------------------------------------------------// Macro to define an initialized fstab entry#define FSTAB_ENTRY( _l, _name, _data, _syncmode, _mount, _umount, \ _open, _unlink, _mkdir, _rmdir, _rename, _link, \ _opendir, _chdir, _stat, _getinfo, _setinfo) \struct cyg_fstab_entry _l = \{ \ _name, \ _data, \ _syncmode, \ _mount, \ _umount, \ _open, \ _unlink, \ _mkdir, \ _rmdir, \ _rename, \ _link, \ _opendir, \ _chdir, \ _stat, \ _getinfo, \ _setinfo \};//=============================================================================// Mount table entrystruct cyg_mtab_entry{ const char *name; // name of mount point const char *fsname; // name of implementing filesystem const char *devname; // name of hardware device CYG_ADDRWORD data; // private data value,用来存放了sb // The following are filled in after a successful mount operation cyg_bool valid; // Valid entry? cyg_fstab_entry *fs; // pointer to fstab entry cyg_dir root; // root directory pointer} /*CYG_HAL_TABLE_TYPE*/;// This macro defines an initialized mtab entry#define MTAB_ENTRY( _l, _name, _fsname, _devname, _data ) \struct cyg_mtab_entry _l CYG_HAL_TABLE_ENTRY(mtab) = \{ \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -