diff --git a/fs/vfs/vfs_vnode.c b/fs/vfs/vfs_vnode.c index f9da1abe994cd6a97923dae9cc520dd4be00f992..8cf9862546a9c89403e0d821ec88533cb8ecc188 100755 --- a/fs/vfs/vfs_vnode.c +++ b/fs/vfs/vfs_vnode.c @@ -47,7 +47,10 @@ enum vtype iftovt_tab[16] = { VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON, VREG, VNON, VLNK, VNON, VSOCK, VNON, VNON, VBAD, }; - +int vttoif_tab[10] = { + 0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, + S_IFSOCK, S_IFIFO, S_IFMT, S_IFMT +}; /* * Memo: diff --git a/include/osv/vnode.h b/include/osv/vnode.h index 51cf190c0d159371bd910ecab574377c13b3f34b..2b249a6429b69fe75531d76bd0af980992567535 100755 --- a/include/osv/vnode.h +++ b/include/osv/vnode.h @@ -196,7 +196,10 @@ int vcount(struct vnode *); void vflush(struct mount *); extern enum vtype iftovt_tab[]; +extern int vttoif_tab[]; #define IFTOVT(mode) (iftovt_tab[((mode) & S_IFMT) >> 12]) +#define VTTOIF(indx) (vttoif_tab[(int)(indx)]) +#define MAKEIMODE(indx, mode) (int)(VTTOIF(indx) | (mode)) __END_DECLS