Go to the documentation of this file.
41 #define VBLKSIZE (1 << VBLKSHIFT)
42 #define VBLKMASK (VBLKSIZE - 1)
43 #define DBPERVBLK (VBLKSIZE / DEV_BSIZE)
44 #define INDIRPERVBLK(fs) (NINDIR(fs) / ((fs)->fs_bsize >> VBLKSHIFT))
45 #define IPERVBLK(fs) (INOPB(fs) / ((fs)->fs_bsize >> VBLKSHIFT))
46 #define INOPB(fs) ((fs)->fs_inopb)
47 #define INO_TO_VBA(fs, ipervblk, x) \
48 (fsbtodb(fs, cgimin(fs, ino_to_cg(fs, x))) + \
49 (((x) % (fs)->fs_ipg) / (ipervblk) * DBPERVBLK))
50 #define INO_TO_VBO(ipervblk, x) ((x) % ipervblk)
69 #if defined(UFS2_ONLY)
70 #define DIP(field) dp2.field
71 #elif defined(UFS1_ONLY)
72 #define DIP(field) dp1.field
74 #define DIP(field) fs->fs_magic == FS_UFS1_MAGIC ? dp1.field : dp2.field
89 size_t n, nb, size, off, vboff;
101 for (n = 0; sblock_try[n] != -1; n++) {
102 if (dskread(
fs, sblock_try[n] /
DEV_BSIZE, 16, fd))
105 #
if defined(UFS1_ONLY)
107 #elif defined(UFS2_ONLY)
116 if (sblock_try[n] == -1) {
126 if (inomap !=
inode) {
131 #if defined(UFS1_ONLY)
134 #elif defined(UFS2_ONLY)
172 if (indmap != vbaddr) {
173 if (dskread(indbuf, vbaddr,
DBPERVBLK, fd))
177 n = (lbn -
NDADDR) & (n - 1);
178 #if defined(UFS1_ONLY)
180 #elif defined(UFS2_ONLY)
197 if (dskread(blkbuf, vbaddr, n >>
DEV_BSHIFT, fd))
204 memcpy(s, blkbuf + vboff, n);
248 for (s = path; *s && *s !=
'/'; s++)
259 if ((dt = fsfind(
name, &ino, fd)) <= 0)
264 return dt ==
DT_REG ? ino : 0;
284 fsread(fd->
ino, &tmp, 1, fd);
293 return (fsread(fd->
ino, data, size, fd));
322 (
void *) ufs_openFile,
331 kpanic(
"Unable To Enable UFS");
struct ufs1_dinode ufs1_i
int ufs_initialize(struct vfs_mountPoint *mp)
void kfree(void *baseAddr)
int lookup(struct inode *dir, const char *name, int len, struct inode **result)
int strcmp(const char *str1, const char *str2)
void kpanic(const char *fmt,...)
print panic message and halt system
void * memcpy(const void *dst, const void *src, size_t length)
struct vfs_mountPoint * mp
int vfsRegisterFS(struct fileSystem newFS)
register a file system
int ufs_writeFile(fileDescriptor_t *fd, char *data, uInt32 offset, long size)
int ufs_readFile(fileDescriptor_t *fd, char *data, uInt32 offset, long size)
struct ufs2_dinode ufs2_i
#define sblksize(fs, size, lbn)
int(* read)(void *, void *, uInt32, uInt32)
#define INO_TO_VBA(fs, ipervblk, x)
struct device_node * device
void * kmalloc(uInt32 len)
#define INO_TO_VBO(ipervblk, x)
struct device_interface * devInfo
int kprintf(const char *,...)
#define blkmap(fs, map, loc)