diff --git a/src/bin/init/main.c b/src/bin/init/main.c index 60f1fc2..7be38fb 100644 --- a/src/bin/init/main.c +++ b/src/bin/init/main.c @@ -66,7 +66,7 @@ sched_yield(); #endif - +/* i = fork(); if (0x0 == i) { printf("Starting Ubix Registry (ubistry)\n"); @@ -78,12 +78,12 @@ while (pidStatus(i) > 0x0) { sched_yield(); } - +*/ startup: i = fork(); if (0 == i) { printf("Starting Login Daemon.\n"); - exec("sys:/login",0x0,0x0); + exec("sys:/ubix/login",0x0,0x0); printf("Error Starting System\n"); exit(0x0); } diff --git a/src/bin/login/main.c b/src/bin/login/main.c index 72cf48d..7c3b5c7 100644 --- a/src/bin/login/main.c +++ b/src/bin/login/main.c @@ -66,7 +66,7 @@ int foo; - + printf("HI"); if ((getuid() != 0x0) && (getgid() != 0x0)) { printf("This Application Must Be Run As Root.\n"); exit(-1); diff --git a/src/sys/include/vfs/file.h b/src/sys/include/vfs/file.h index 44b57c2..1db8018 100644 --- a/src/sys/include/vfs/file.h +++ b/src/sys/include/vfs/file.h @@ -30,6 +30,19 @@ #define SEEK_SET 0x0 +#define VBLKSHIFT 12 +#define VBLKSIZE (1 << VBLKSHIFT) +#define SBLOCKSIZE 8192 +#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ +#define DEV_BSIZE (1<imageFd = tmpFd; /* If We Dont Find the File Return */ if (tmpFd == 0x0) { diff --git a/src/sys/ufs/ufs.c b/src/sys/ufs/ufs.c index eabdbb6..0d7cc15 100644 --- a/src/sys/ufs/ufs.c +++ b/src/sys/ufs/ufs.c @@ -52,19 +52,20 @@ return(0x0); } -struct dmadat { - char blkbuf[VBLKSIZE]; /* filesystem blocks */ - char indbuf[VBLKSIZE]; /* indir blocks */ - char sbbuf[SBLOCKSIZE]; /* superblock */ - char secbuf[DEV_BSIZE]; /* for MBR/disklabel */ - }; -static struct dmadat *dmadat; +//struct dmadat { +// char blkbuf[VBLKSIZE]; /* filesystem blocks */ +// char indbuf[VBLKSIZE]; /* indir blocks */ +// char sbbuf[SBLOCKSIZE]; /* superblock */ +// char secbuf[DEV_BSIZE]; /* for MBR/disklabel */ +// }; +//static struct dmadat *dmadat; -static int ls,dsk_meta; -static u_int32_t fs_off; +//static int ls,dsk_meta; static int sblock_try[] = SBLOCKSEARCH; +static int blah = 0x0; + #if defined(UFS2_ONLY) #define DIP(field) dp2.field #elif defined(UFS1_ONLY) @@ -92,10 +93,10 @@ static ufs2_daddr_t blkmap, indmap; u_int u; - blkbuf = dmadat->blkbuf; - indbuf = dmadat->indbuf; - fs = (struct fs *)dmadat->sbbuf; - if (!dsk_meta) { + blkbuf = fd->dmadat->blkbuf; + indbuf = fd->dmadat->indbuf; + fs = (struct fs *)fd->dmadat->sbbuf; + if (!fd->dsk_meta) { inomap = 0; for (n = 0; sblock_try[n] != -1; n++) { if (dskread(fs, sblock_try[n] / DEV_BSIZE, 16,fd)) @@ -120,7 +121,7 @@ kprintf("Not ufs\n"); return -1; } - dsk_meta++; + fd->dsk_meta++; } if (!inode) return 0; @@ -140,18 +141,19 @@ dp2 = ((struct ufs2_dinode *)blkbuf)[n]; #endif inomap = inode; - fs_off = 0; + fd->offset = 0; blkmap = indmap = 0; } s = buf; size = DIP(di_size); - n = size - fs_off; + kprintf("Size: [%i]\n",size); + n = size - fd->offset; if (nbyte > n) nbyte = n; nb = nbyte; while (nb) { - lbn = lblkno(fs, fs_off); - off = blkoff(fs, fs_off); + lbn = lblkno(fs, fd->offset); + off = blkoff(fs, fd->offset); if (lbn < NDADDR) { addr = DIP(di_db[lbn]); } else if (lbn < NDADDR + NINDIR(fs)) { @@ -193,7 +195,7 @@ n = nb; memcpy(s, blkbuf + vboff, n); s += n; - fs_off += n; + fd->offset += n; nb -= n; } return nbyte; @@ -208,20 +210,18 @@ char *s; ssize_t n; - fs_off = 0; + fd->offset = 0; while ((n = fsread(*ino, buf, DEV_BSIZE,fd)) > 0) for (s = buf; s < buf + DEV_BSIZE;) { d = (void *)s; - if (ls) - kprintf("%s ", d->d_name); - else if (!strcmp(name, d->d_name)) { + if (!strcmp(name, d->d_name)) { *ino = d->d_fileno; return d->d_type; } s += d->d_reclen; } - if (n != -1 && ls) - kprintf("\n"); + //if (n != -1 && ls) + //kprintf("\n"); return 0; } @@ -245,7 +245,7 @@ for (s = path; *s && *s != '/'; s++); if ((n = s - path) > MAXNAMLEN) return 0; - ls = *path == '?' && n == 1 && !*s; + //ls = *path == '?' && n == 1 && !*s; memcpy(name, path, n); name[n] = 0; if (dt != DT_DIR) { @@ -263,13 +263,24 @@ static int ufs_openFile(const char *file, fileDescriptor *fd) { - char data[1024]; int ino = 0; + kprintf("ufs.c: openFile\n"); + fd->dmadat = (struct dmadat *)kmalloc(sizeof(struct dmadat)); ino = lookup(file,fd); - //kprintf("Opening File: [%s][0x%X]\n",file,ino); - fsread(ino,&data,4,fd); - kprintf("Data: [%s]\n",data); - while (1); + fd->offset = 0x0; + fd->ino = ino; + if (ino == 0x0) + return(-1); + + /* Return */ + fd->perms = 0x1; + kprintf("[%i]\n",blah); + blah++; + return(0x1); + } + +int ufs_readFile(fileDescriptor *fd,char *data,uInt32 offset,long size) { + fsread(fd->ino,data,size,fd); return(0x0); } @@ -293,7 +304,7 @@ {NULL, /* prev */ NULL, /* next */ (void *)ufs_initialize, /* vfsInitFS */ - NULL, /* vfsRead */ + (void *)ufs_readFile, /* vfsRead */ NULL, /* vfsWrite */ (void *)ufs_openFile, /* vfsOpenFile */ NULL, /* vfsUnlink */ @@ -307,7 +318,7 @@ kpanic("Unable To Enable UFS"); return(0x1); } - dmadat = (struct dmadat *)kmalloc(sizeof(struct dmadat)); + //dmadat = (struct dmadat *)kmalloc(sizeof(struct dmadat)); /* Return */ return(0x0); } diff --git a/src/sys/vfs/file.c b/src/sys/vfs/file.c index 1036aef..e7cb2aa 100644 --- a/src/sys/vfs/file.c +++ b/src/sys/vfs/file.c @@ -271,7 +271,7 @@ char fileName[1024]; fileDescriptor *tmpFd = 0x0; - + kprintf("NO?\n"); /* Allocate Memory For File Descriptor */ if((tmpFd = (fileDescriptor *)kmalloc(sizeof(fileDescriptor))) == 0x0) { kprintf("Error: tmpFd == NULL, File: %s, Line: %i\n",__FILE__,__LINE__); @@ -279,7 +279,7 @@ } sprintf(fileName,"%s",file); - + kprintf("file.c: fopen\n"); if (strstr(fileName,":")) { mountPoint = (char *)strtok((char *)&fileName,":"); path = strtok(NULL,"\n"); @@ -334,7 +334,7 @@ break; } } - + kprintf("file.c: a [%s]\n",tmpFd->fileName); /* Search For The File */ if (tmpFd->mp->fs->vfsOpenFile(tmpFd->fileName,tmpFd) == 0x1) { /* If The File Is Found Then Set Up The Descriptor */ @@ -350,7 +350,7 @@ spinUnlock(&fdTable_lock); return 0x1; } - + kprintf("file.c: b\n"); /* Set Its Status To Open */ tmpFd->status = fdOpen;