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

📄 nfs.h

📁 newos is new operation system
💻 H
字号:
/*** Copyright 2002, Travis Geiselbrecht. All rights reserved.** Distributed under the terms of the NewOS License.*/#ifndef _NFS_H#define _NFS_H#include <kernel/vfs.h>#include <newos/net.h>#include <kernel/net/socket.h>#include "rpc.h"#include "nfs_fs.h"/* fs structure */typedef struct nfs_fs {	fs_id id;	ipv4_addr server_addr;	rpc_state rpc;	char server_path[MNTPATHLEN];	mutex lock;	struct nfs_vnode *root_vnode;} nfs_fs;/* vnode structure */typedef struct nfs_vnode {	nfs_fs *fs;	sem_id sem;	stream_type st;	fhandle nfs_handle;} nfs_vnode;typedef struct nfs_cookie {	nfs_vnode *v;	union {		struct nfs_dircookie {			unsigned int nfscookie;			bool at_end;		} dir;		struct nfs_filecookie {			off_t pos;			int oflags;		} file;	} u;} nfs_cookie;#define VNODETOVNID(vno) ((vnode_id)((addr_t)(vno)))#define VNIDTOVNODE(vnid) ((nfs_vnode *)((addr_t)(vnid)))/* fs calls */int nfs_mount(fs_cookie *fs, fs_id id, const char *device, void *args, vnode_id *root_vnid);int nfs_unmount(fs_cookie fs);int nfs_sync(fs_cookie fs);int nfs_lookup(fs_cookie fs, fs_vnode dir, const char *name, vnode_id *id);int nfs_getvnode(fs_cookie fs, vnode_id id, fs_vnode *v, bool r);int nfs_putvnode(fs_cookie fs, fs_vnode v, bool r);int nfs_removevnode(fs_cookie fs, fs_vnode v, bool r);int nfs_open(fs_cookie fs, fs_vnode v, file_cookie *cookie, int oflags);int nfs_close(fs_cookie fs, fs_vnode v, file_cookie cookie);int nfs_freecookie(fs_cookie fs, fs_vnode v, file_cookie cookie);int nfs_fsync(fs_cookie fs, fs_vnode v);ssize_t nfs_read(fs_cookie fs, fs_vnode v, file_cookie cookie, void *buf, off_t pos, ssize_t len);ssize_t nfs_write(fs_cookie fs, fs_vnode v, file_cookie cookie, const void *buf, off_t pos, ssize_t len);int nfs_seek(fs_cookie fs, fs_vnode v, file_cookie cookie, off_t pos, seek_type st);int nfs_ioctl(fs_cookie fs, fs_vnode v, file_cookie cookie, int op, void *buf, size_t len);int nfs_canpage(fs_cookie fs, fs_vnode v);ssize_t nfs_readpage(fs_cookie fs, fs_vnode v, iovecs *vecs, off_t pos);ssize_t nfs_writepage(fs_cookie fs, fs_vnode v, iovecs *vecs, off_t pos);int nfs_create(fs_cookie fs, fs_vnode dir, const char *name, void *create_args, vnode_id *new_vnid);int nfs_unlink(fs_cookie fs, fs_vnode dir, const char *name);int nfs_rename(fs_cookie fs, fs_vnode olddir, const char *oldname, fs_vnode newdir, const char *newname);int nfs_mkdir(fs_cookie _fs, fs_vnode _base_dir, const char *name);	int nfs_rmdir(fs_cookie _fs, fs_vnode _base_dir, const char *name);int nfs_rstat(fs_cookie fs, fs_vnode v, struct file_stat *stat);int nfs_wstat(fs_cookie fs, fs_vnode v, struct file_stat *stat, int stat_mask);#endif

⌨️ 快捷键说明

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