⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfmgr.h

📁 T-kernel 的extension源代码
💻 H
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	@(#)sfmgr.h (seio) * *	Standard input/output */#define	DEBUG_MODULE	"(seio)"#include <basic.h>#include <tk/tkernel.h>#include <tk/syslib.h>#include <tk/util.h>#include <extension/seio.h>#include <extension/clk.h>#include <errno.h>#include <sys/syscall.h>#include <sys/util.h>#include <sys/queue.h>#include <stdlib.h>#include <libstr.h>#include <tstring.h>#include <sys/util.h>#include <extension/sys/svc/ifseio.h>#include <sys/debug.h>#include <seio/unistd.h>#include <extension/errno.h>#include "tf.h"#include "fileio.h"/* * Error code relation */#define	EC_MASK			(0xffff0000U)#define	ED_MASK			(0x0000ffffU)#define	toER(class, detail)	((ER)(((UW)(class) << 16) | ((UW)(detail) & 0x0000ffffU)))/* * SEIO error code */#define	toERUX(errno)	( (E_SEIO) | ((errno) & 0xffff) )/* * Additional SEIO error code */#define ENOTDIR		20	/* It is not a directory */#define EISDIR		21	/* It is a directory   *//* * Special device number "dev" */#define ROOT_DEV	0#define STDIO_DEV	0/* * Special file number "ino" */#define NOEXS_INO	0#define ROOT_INO	1#define SFFS_INO(x)	((x) + 2)#define SROOT_INO	SFFS_INO(0)/* * Process attachment information  */typedef struct {	FD	**fdtbl;	/* Open file */	CDINF	curdir;		/* Current directory */	mode_t	cmask;		/* File creation mode mask */} UXINFO;#define	UXINFO_SZ	( sizeof(UXINFO) )/* * Command packet */typedef struct {	SyscallCmdPacket	cmd;		/* Command parameter and others. Common information */	UXINFO			*uxinfo;	/* Request process attachment information*/	VP			exinf;		/* System call individual information */} CmdPkt;/* * For path name analysis */#define LOCAL_U_LOOKUP_FN	0#define LOCAL_U_LOOKUP_PARA	LPINF/* * Others */#ifdef GHS#define	NIL	{0, 0, 0}	/* Nil/Zero */#else#define	NIL	{}		/* Nil/Zero */#endif/* --------------------------------------------------------------------------- */#define	IMPORT_DEFINE	1#if IMPORT_DEFINE/* main.c */IMPORT TF_CTX	tf_euctotc_ctx;IMPORT TF_CTX	tf_tctoeuc_ctx;IMPORT FastLock	UxLock;IMPORT FastLock	EtoTLock;IMPORT FastLock	TtoELock;IMPORT W	MaxOpenF;IMPORT PRI	FsTskPri;IMPORT W	SyncTimeOut;IMPORT ER	main( INT ac, UB *av[] );/* fileio.c */IMPORT QUEUE FSQue;IMPORT void  DiskErrorHandler( DiskErrInfo *info );IMPORT ER    CheckDiskError( FS *_fs, INODE *inode );IMPORT ER    CallFileIO( int fildes, CmdPkt *pkt );IMPORT ER    CallFileIO_lookup( const char *path, CmdPkt *pkt );IMPORT ER    CallFileIO_path( CmdPkt *pkt );IMPORT ER    CallFileIO_fd( int fildes, CmdPkt *pkt );IMPORT ER    CallFileIO_attach( CmdPkt *pkt );IMPORT ER    CallFileIO_detach( CmdPkt *pkt );/* inode.c */IMPORT void   inode_QueInit( FS *fs );IMPORT ER     inode_CheckEmpty( FS *fs );IMPORT void   inode_Register( FS *fs, INODE *inode, UB omode );IMPORT ER     inode_Release( FS *fs, INODE *inode, UB omode, BOOL force );IMPORT void   inode_Free( FS *fs, INODE *inode );IMPORT INODE* inode_Search( FS *fs, ino_t ino );IMPORT void   inode_ChangeQue( FS *fs, INODE *inode );/* stdio.c */IMPORT STDIOFS STDIO_FS;IMPORT void    std_init( UXINFO *uxinfo );IMPORT WER     std_open( FDPkt *fdp, int oflag, mode_t mode);IMPORT ER      std_close( FDPkt *fdp );IMPORT WER     std_lseek( FDPkt *fdp, long offset, int whence );IMPORT WER     std_read( FDPkt *fdp, void *buf, size_t nbyte );IMPORT WER     std_write( FDPkt *fdp, const void *buf, size_t nbyte );IMPORT ER      std_fstat( FDPkt *fdp, struct stat *sb );/* stdfs.c */IMPORT SFFS STD_FS;IMPORT ER   sf_attach( const TC *devnm, const char *connm, int mode );IMPORT ER   sf_detach( const TC *devnm, int eject );IMPORT WER  sf_open( FDPkt *fdp, const char *fname, int oflag, mode_t mode );IMPORT ER   sf_close( FDPkt *fdp );IMPORT WER  sf_lseek( FDPkt *fdp, long offset, int whence );IMPORT WER  sf_read( FDPkt *fdp, void *buf, size_t nbyte );IMPORT WER  sf_write( FDPkt *fdp, const void *buf, size_t nbyte );IMPORT WER  sf_getdents( FDPkt *fdp, struct dirent *buf, size_t nbyte );IMPORT ER   sf_fsync( FDPkt *fdp );IMPORT ER   sf_rename( INODE*, INODE*, const char *fname );IMPORT ER   sf_unlink( INODE* );IMPORT ER   sf_chdir( FS *fs, INODE* );IMPORT ER   sf_chmod( INODE*, mode_t mode );IMPORT ER   sf_fchmod( FDPkt *fdp, mode_t mode );IMPORT ER   sf_mkdir( INODE*, const char *fname, mode_t mode );IMPORT ER   sf_rmdir( INODE* );IMPORT ER   sf_utimes( INODE*, const struct timeval times[2] );IMPORT ER   sf_truncate( INODE*, off_t length );IMPORT ER   sf_ftruncate( FDPkt *fdp, off_t length );IMPORT ER   sf_stat( INODE*, struct stat *sb );IMPORT ER   sf_lstat( INODE*, struct stat *sb );IMPORT ER   sf_fstat( FDPkt *fdp, struct stat *sb );IMPORT WER  sf_getfsstat( struct statfs *buf, long bufsize, int flags );IMPORT ER   sf_getlink( INODE*, char *buf );IMPORT ER   sf_lookup( CDINF *curdir, LPINF *lp );/* root.c */IMPORT RTFS ROOT_FS;IMPORT WER  rt_open( FDPkt *fdp, int oflag, mode_t mode );IMPORT ER   rt_close( FDPkt *fdp );IMPORT WER  rt_lseek( FDPkt *fdp, long offset, int whence );IMPORT WER  rt_getdents( FDPkt *fdp, struct dirent *buf, size_t nbyte );IMPORT ER   rt_fsync( FDPkt *fdp );IMPORT ER   rt_stat( struct stat *sb );IMPORT ER   rt_lstat( struct stat *sb );IMPORT ER   rt_fstat( FDPkt *fdp, struct stat *sb );/* tf_intf.c */IMPORT W    __tf_lock_init();IMPORT void __tf_lock_finish();/* fsconnect.c */IMPORT ER call_attach(INT mode, FS *fs);IMPORT ER get_fssize(INT mode);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -