diff --git a/debug/sysctl.c b/debug/sysctl.c index b4c45b9..24839ba 100644 --- a/debug/sysctl.c +++ b/debug/sysctl.c @@ -18,14 +18,15 @@ int *sI; - mib[0] = 1; - mib[1] = 18; + mib[0] = 2;//1; + mib[1] = 134516811;//18; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[len: %i]\n", len); + if (len == 4) { sI = p; printf("[%i]\n", sI[0]); diff --git a/sys/fs/Makefile b/sys/fs/Makefile index a786ece..cb14a93 100644 --- a/sys/fs/Makefile +++ b/sys/fs/Makefile @@ -4,7 +4,7 @@ #all: ubixfs-code pci-code ufs-code vfs-code isa-code kernel-code lib-code vmm-code sys-code init-code devfs-code mpi-code kmods-code kernel-img #ubixfs-code -all: ubixfs-code devfs-code ufs-code vfs-code common-code +all: ubixfs-code devfs-code ufs-code vfs-code common-code fat-code ubixfs-code: ubixfs (cd ubixfs;make) @@ -21,9 +21,12 @@ ufs-code: ufs (cd ufs;make) +fat-code: fat + (cd fat;make) clean: (cd ubixfs;make clean) (cd vfs;make clean) (cd devfs;make clean) (cd ufs;make clean) (cd common;make clean) + (cd fat; make clean) diff --git a/sys/include/fat/fat.h b/sys/include/fat/fat.h new file mode 100644 index 0000000..8a26997 --- /dev/null +++ b/sys/include/fat/fat.h @@ -0,0 +1 @@ +void init_fat(); diff --git a/sys/include/sys/fcntl.h b/sys/include/sys/fcntl.h index 985cc79..0578a30 100644 --- a/sys/include/sys/fcntl.h +++ b/sys/include/sys/fcntl.h @@ -88,6 +88,8 @@ #define FFLAGS(oflags) ((oflags) & O_EXEC ? (oflags) : (oflags) + 1) #define OFLAGS(fflags) ((fflags) & O_EXEC ? (fflags) : (fflags) - 1) +#define FEXEC O_EXEC + #define FMASK (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK|O_DIRECT|FEXEC) #endif /* !_SYS_FCNTL_H_ */ diff --git a/sys/include/ubixos/init.h b/sys/include/ubixos/init.h index e837858..9731565 100644 --- a/sys/include/ubixos/init.h +++ b/sys/include/ubixos/init.h @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -54,7 +55,7 @@ typedef int (*intFunctionPTR)(void); -intFunctionPTR init_tasks[] = { static_constructors, i8259_init, idt_init, vitals_init, sysctl_init, vfs_init, sched_init, pit_init, atkbd_init, time_init, pci_init, devfs_init, tty_init, ufs_init, initHardDisk, initLNC, net_init }; +intFunctionPTR init_tasks[] = { static_constructors, i8259_init, idt_init, vitals_init, sysctl_init, vfs_init, sched_init, pit_init, atkbd_init, time_init, pci_init, devfs_init, tty_init, ufs_init, fat_init, initHardDisk, initLNC, net_init }; //ne2k_init, //ubixfs_init, diff --git a/sys/init/main.c b/sys/init/main.c index 46c78f5..b03d371 100644 --- a/sys/init/main.c +++ b/sys/init/main.c @@ -154,6 +154,10 @@ else kprintf("Mounted sys\n"); + if (vfs_mount(0x2,0x1,0x1,0xFA,"fat","rw") != 0x0) { + kprintf("Problem Mounting fat Mount Point\n"); + } + /* Do our mounting */ /* if (vfs_mount(0x0,0x0,0x0,0x0,"sys","rw") != 0x0) { @@ -174,6 +178,8 @@ /* kprintf("SDE Thread Start! [0x%X]\n", &sdeThread); */ /* execThread(&sdeThread, 0x2000,0x0); */ + while (1); + kprintf("Kernel Name: [%s], Boot How To [0x%X], Boot Dev: [0x%X]\n", _kernelname, _boothowto, _bootdev); kprintf("B_TYPE(0x%X), B_SLICE(0x%X), B_UNIT(0x%X), B_PARTITION(0x%X)\n", B_TYPE(_bootdev), B_SLICE(_bootdev), B_UNIT(_bootdev), B_PARTITION(_bootdev)); kprintf("_bootinfo.bi_version: 0x%X\n", _bootinfo.bi_version); diff --git a/sys/kernel/kern_sysctl.c b/sys/kernel/kern_sysctl.c index b475ab8..20b25b7 100644 --- a/sys/kernel/kern_sysctl.c +++ b/sys/kernel/kern_sysctl.c @@ -136,6 +136,12 @@ usPage_val = 1023; sysctl_add(name, name_len, "kern.ngroups", &page_val, sizeof(int32_t)); + /* XXX 6, 1 */ + name[0] = 2; + name[1] = 134516822; + char s62[2] = "\0"; + sysctl_add(name, name_len, "kern.msgbuf", &s62, 1); + } int sysctl_init() { @@ -156,7 +162,8 @@ ctls->id = CTL_UNSPEC; ctls->children = 0x0; sprintf(ctls->name, "unspec"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->prev = ctls; @@ -164,7 +171,7 @@ tmpCtl->children = 0x0; sprintf(tmpCtl->name, "kern"); ctls->next = tmpCtl; - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -172,7 +179,7 @@ tmpCtl->id = CTL_VM; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "vm"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -180,7 +187,7 @@ tmpCtl->id = CTL_VFS; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "vfs"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -188,7 +195,7 @@ tmpCtl->id = CTL_NET; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "net"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -196,7 +203,7 @@ tmpCtl->id = CTL_DEBUG; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "debug"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -204,7 +211,7 @@ tmpCtl->id = CTL_HW; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "hw"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -212,7 +219,7 @@ tmpCtl->id = CTL_MACHDEP; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "machdep"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -220,7 +227,7 @@ tmpCtl->id = CTL_USER; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "user"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -228,7 +235,8 @@ tmpCtl->id = CTL_P1003_1B; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "p1003_1b"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); tmpCtl->next = (struct sysctl_entry *) kmalloc(sizeof(struct sysctl_entry)); tmpCtl->next->prev = tmpCtl; @@ -236,7 +244,8 @@ tmpCtl->id = CTL_UBIX; tmpCtl->children = 0x0; sprintf(tmpCtl->name, "ubix"); - insert_trieNode(&sysctl_headTrie, &ctls->name, ctls); + + insert_trieNode(&sysctl_headTrie, ctls->name, ctls); def_ctls(); @@ -439,7 +448,8 @@ sprintf(tmpCtl->children->name, str_name); - insert_trieNode(&sysctl_headTrie, &tmpCtl->children->name, tmpCtl->children); + insert_trieNode(&sysctl_headTrie, tmpCtl->children->name, tmpCtl->children); + tmpCtl->children->value = (void *) kmalloc(buf_size); memcpy(tmpCtl->children->value, buf, buf_size); tmpCtl->children->val_len = buf_size; @@ -458,7 +468,9 @@ newCtl->namelen = namelen; sprintf(newCtl->name, str_name); - insert_trieNode(&sysctl_headTrie, &newCtl->name, newCtl); + + insert_trieNode(&sysctl_headTrie, newCtl->name, newCtl); + newCtl->value = (void *) kmalloc(buf_size); memcpy(newCtl->value, buf, buf_size); newCtl->val_len = buf_size; diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index f669668..2afc81f 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/sys/pci/hd.c b/sys/pci/hd.c index be6db78..945a57f 100644 --- a/sys/pci/hd.c +++ b/sys/pci/hd.c @@ -37,7 +37,14 @@ static const uuid_t freebsd_ufs_uuid = GPT_ENT_TYPE_FREEBSD_UFS; +static hdC = 0; + int initHardDisk() { + _initHardDisk(0xE0); + _initHardDisk(0xF0); +} + +int _initHardDisk(int hdD) { int i = 0x0; int x = 0x0; int minor = 0x0; @@ -57,7 +64,7 @@ hdd = (struct driveInfo *) kmalloc(sizeof(struct driveInfo)); hdd->ata_identify = (struct ata_identify_data *) kmalloc(sizeof(struct ata_identify_data)); hdd->hdPort = 0x1F0; - hdd->hdDev = 0x40; + hdd->hdDev = hdD; //0x40; hdd->parOffset = 0x0; hdd->part = 0x2; @@ -73,7 +80,7 @@ devInfo->standby = (void *) &hdStandby; devInfo->info = hdd; - devInfo->major = 0x1; + devInfo->major = hdC + 0x1; data = (char *) kmalloc(512); d = (struct dos_partition *) (data + 0x1BE); @@ -82,8 +89,9 @@ bsdd = (struct bsd_disklabel *) data2; if (device_add(0, 'c', devInfo) == 0x0) { - kprintf("ad0 - Start: [0x0], Size: [0x%x/0x%X]\n", hdd->hdSize, hdd->hdSize * 512); - devfs_makeNode("ad0", 'b', 0x1, 0x0); + kprintf("ad%i - Start: [0x0], Size: [0x%x/0x%X]\n", hdC, hdd->hdSize, hdd->hdSize * 512); + sprintf(name, "ad%ip%i", hdC, hdd->part); + devfs_makeNode(name, 'b', 0x1, 0x0); hdRead(devInfo->info, data, 0x0, 0x1); if (d[0].dp_type == 0xEE) { @@ -115,8 +123,8 @@ //kprintf("[%i - %i]\n", hdd->parOffset, hdd2->parOffset); if (device_add(minor, 'c', devInfo2) == 0x0) { - sprintf(name, "ad0p%i", hdd->part); - kprintf("%s - Type: [0x%X - %s], Start: [%i], Offset: [%i], Size: [%i]\n", name, d[0].dp_type, (d[0].dp_type >= 0 && d[0].dp_type <= 255) ? part_types[d[0].dp_type] : "Unknown", hdd2->lba_start, hdd2->parOffset, hdd2->lba_end - hdd2->lba_start); + sprintf(name, "ad%ip%i", hdC, hdd->part); + kprintf("%s - Type: [0x%X - %s], Start: [%i], Offset: [%i], Size: [%i], MM: [%i:%i]\n", name, d[0].dp_type, (d[0].dp_type >= 0 && d[0].dp_type <= 255) ? part_types[d[0].dp_type] : "Unknown", hdd2->lba_start, hdd2->parOffset, hdd2->lba_end - hdd2->lba_start, devInfo->major, minor); devfs_makeNode(name, 'c', 0x1, minor); } } @@ -142,8 +150,9 @@ minor++; if (device_add(minor, 'c', devInfo2) == 0x0) { - sprintf(name, "ad0s%i", i + 1); - kprintf("%s - Type: [0x%X - %s], Start: [0x%X], Size: [0x%X]\n", name, d[i].dp_type, (d[i].dp_type >= 0 && d[i].dp_type <= 255) ? part_types[d[i].dp_type] : "Unknown", d[i].dp_start, d[i].dp_size); + sprintf(name, "ad%is%i", hdC, i + 1); + kprintf("%s - Type: [0x%X - %s], Start: [0x%X], Size: [0x%X], MM: [%i:%i]\n", name, d[i].dp_type, (d[i].dp_type >= 0 && d[i].dp_type <= 255) ? part_types[d[i].dp_type] : "Unknown", d[i].dp_start, d[i].dp_size, devInfo->major, minor); + devfs_makeNode(name, 'c', 0x1, minor); if (d[i].dp_type == 0xA5) { @@ -152,7 +161,7 @@ for (x = 0; x < bsdd->d_npartitions; x++) { if (bsdd->d_partitions[x].p_size > 0) { - sprintf(name, "ad0s%i%c", i + 1, 'a' + x); + sprintf(name, "ad%is%i%c", hdC, i + 1, 'a' + x); //New Nodes devInfo2 = (struct device_interface *) kmalloc(sizeof(struct device_interface)); hdd2 = (struct driveInfo *) kmalloc(sizeof(struct driveInfo)); @@ -180,6 +189,7 @@ } } kfree(data); + hdC++; return (0x0); }