int main(int argc, char **argv) { _u8 error = 0; mbr_t *mbr; printf("MBR info v0.1\n"); printf("Author: Tiago Natel aka i4k\n"); if (argc < 2) { fprintf(stderr, "Invalid number of arguments...\n"); fprintf(stderr, "Usage: %s <mbr-file or disk device>\n", *argv); return 1; } printf("Size of mbr struct: %d\n", sizeof(mbr_t)); error = readFile(argv[1]); if (!error) { fprintf(stderr, "Failed to read file: %s\n", argv[1]); return 1; } mbr = (mbr_t *) mbrbytes; printMBR(mbr); return 0; }
int iinit(struct proc* p, int dev) { struct inode* rootNode; struct superblock sb; // TODO: change ot iterate over all partitions cprintf("kernal by Asaf and Ilana \n"); initlock(&icache.lock, "icache"); rootNode = p->cwd; // acquire(&icache.lock); initMbr(dev); printMBR(&mbrI); cprintf("booting from %d \n", bootfrom); if (bootfrom == -1) { panic("no bootable partition"); } rootNode->part = &(partitions[bootfrom]); int i; for (i = 0; i < NPARTITIONS; i++) { readsb(dev, i); sb = sbs[i]; cprintf("sb: offset %d size %d nblocks %d ninodes %d nlog %d logstart %d inodestart %d bmap start %d\n", sb.offset, sb.size, sb.nblocks, sb.ninodes, sb.nlog, sb.logstart, sb.inodestart, sb.bmapstart); } // set root inode // release(&icache.lock); // cprintf("root node init %d \n",rootNode->part->offset); return bootfrom; }