refining vfs
This commit is contained in:
@@ -26,12 +26,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/vfs.c.o",
|
"obj/kernel/kbd.c.o",
|
||||||
"kernel/vfs.c"
|
"kernel/kbd.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/vfs.c",
|
"file": "/home/slinky/source/RockOS/kernel/kbd.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/vfs.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/kbd.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -43,12 +43,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/kmain.c.o",
|
"obj/kernel/gdt.c.o",
|
||||||
"kernel/kmain.c"
|
"kernel/gdt.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/kmain.c",
|
"file": "/home/slinky/source/RockOS/kernel/gdt.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/kmain.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/gdt.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -67,74 +67,6 @@
|
|||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/pic/pic.c",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/pic/pic.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pic/pic.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pic/pic.c.o"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/drivers/cpio/cpio.c.o",
|
|
||||||
"kernel/drivers/cpio/cpio.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/cpio/cpio.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/cpio/cpio.c.o"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/drivers/pty/pty.c.o",
|
|
||||||
"kernel/drivers/pty/pty.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/pty/pty.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pty/pty.c.o"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/drivers/vga/vga.c.o",
|
|
||||||
"kernel/drivers/vga/vga.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/vga/vga.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/vga/vga.c.o"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/drivers/ide/ide.c.o",
|
|
||||||
"kernel/drivers/ide/ide.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/ide/ide.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/ide/ide.c.o"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
@@ -179,12 +111,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/gdt.c.o",
|
"obj/kernel/drivers/ide/ide.c.o",
|
||||||
"kernel/gdt.c"
|
"kernel/drivers/ide/ide.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/gdt.c",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/ide/ide.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/gdt.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/ide/ide.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -196,12 +128,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/memory/mm.c.o",
|
"obj/kernel/drivers/vga/vga.c.o",
|
||||||
"kernel/memory/mm.c"
|
"kernel/drivers/vga/vga.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/memory/mm.c",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/vga/vga.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/memory/mm.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/vga/vga.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -213,12 +145,63 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/kbd.c.o",
|
"obj/kernel/drivers/cpio/cpio.c.o",
|
||||||
"kernel/kbd.c"
|
"kernel/drivers/cpio/cpio.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/kbd.c",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/cpio/cpio.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/kbd.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/cpio/cpio.c.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/drivers/pty/pty.c.o",
|
||||||
|
"kernel/drivers/pty/pty.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/drivers/pty/pty.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pty/pty.c.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/scheduler.c.o",
|
||||||
|
"kernel/scheduler.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/scheduler.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/scheduler.c.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/elf.c.o",
|
||||||
|
"kernel/elf.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/elf.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/elf.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -254,23 +237,6 @@
|
|||||||
"file": "/home/slinky/source/RockOS/kernel/interrupts.c",
|
"file": "/home/slinky/source/RockOS/kernel/interrupts.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/interrupts.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/interrupts.c.o"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/elf.c.o",
|
|
||||||
"kernel/elf.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/elf.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/elf.c.o"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
@@ -298,63 +264,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/lib/stream.c.o",
|
"obj/kernel/kmain.c.o",
|
||||||
"kernel/lib/stream.c"
|
"kernel/kmain.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/lib/stream.c",
|
"file": "/home/slinky/source/RockOS/kernel/kmain.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/lib/stream.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/kmain.c.o"
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/lib/memory.c.o",
|
|
||||||
"kernel/lib/memory.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/lib/memory.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/lib/memory.c.o"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/lib/print.c.o",
|
|
||||||
"kernel/lib/print.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/lib/print.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/lib/print.c.o"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/lib/ringbuf.c.o",
|
|
||||||
"kernel/lib/ringbuf.c"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/lib/ringbuf.c",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/lib/ringbuf.c.o"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -373,6 +288,40 @@
|
|||||||
"file": "/home/slinky/source/RockOS/kernel/lib/tasks.c",
|
"file": "/home/slinky/source/RockOS/kernel/lib/tasks.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/lib/tasks.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/lib/tasks.c.o"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/lib/ringbuf.c.o",
|
||||||
|
"kernel/lib/ringbuf.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/lib/ringbuf.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/lib/ringbuf.c.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/lib/stream.c.o",
|
||||||
|
"kernel/lib/stream.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/lib/stream.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/lib/stream.c.o"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
@@ -400,12 +349,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/scheduler.c.o",
|
"obj/kernel/lib/print.c.o",
|
||||||
"kernel/scheduler.c"
|
"kernel/lib/print.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/scheduler.c",
|
"file": "/home/slinky/source/RockOS/kernel/lib/print.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/scheduler.c.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/lib/print.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -417,12 +366,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/syscall.S.o",
|
"obj/kernel/lib/memory.c.o",
|
||||||
"kernel/syscall.S"
|
"kernel/lib/memory.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/syscall.S",
|
"file": "/home/slinky/source/RockOS/kernel/lib/memory.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/syscall.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/lib/memory.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -434,12 +383,29 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/common.S.o",
|
"obj/kernel/vfs.c.o",
|
||||||
"kernel/common.S"
|
"kernel/vfs.c"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/common.S",
|
"file": "/home/slinky/source/RockOS/kernel/vfs.c",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/common.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/vfs.c.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/memory/mm.c.o",
|
||||||
|
"kernel/memory/mm.c"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/memory/mm.c",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/memory/mm.c.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -458,23 +424,6 @@
|
|||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/pic/pic.S",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/pic/pic.S",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pic/pic.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pic/pic.S.o"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"arguments": [
|
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
|
||||||
"-c",
|
|
||||||
"-ffreestanding",
|
|
||||||
"-O2",
|
|
||||||
"-Wall",
|
|
||||||
"-Wextra",
|
|
||||||
"-Ikernel",
|
|
||||||
"-o",
|
|
||||||
"obj/kernel/drivers/pit/pit.S.o",
|
|
||||||
"kernel/drivers/pit/pit.S"
|
|
||||||
],
|
|
||||||
"directory": "/home/slinky/source/RockOS",
|
|
||||||
"file": "/home/slinky/source/RockOS/kernel/drivers/pit/pit.S",
|
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pit/pit.S.o"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
@@ -502,12 +451,46 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/memory/mm.S.o",
|
"obj/kernel/drivers/pit/pit.S.o",
|
||||||
"kernel/memory/mm.S"
|
"kernel/drivers/pit/pit.S"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/memory/mm.S",
|
"file": "/home/slinky/source/RockOS/kernel/drivers/pit/pit.S",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/memory/mm.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/drivers/pit/pit.S.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/syscall.S.o",
|
||||||
|
"kernel/syscall.S"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/syscall.S",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/syscall.S.o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/interrupts.S.o",
|
||||||
|
"kernel/interrupts.S"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/interrupts.S",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/interrupts.S.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -526,6 +509,23 @@
|
|||||||
"file": "/home/slinky/source/RockOS/kernel/boot/boot.S",
|
"file": "/home/slinky/source/RockOS/kernel/boot/boot.S",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/boot/boot.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/boot/boot.S.o"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
|
"-c",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-O2",
|
||||||
|
"-Wall",
|
||||||
|
"-Wextra",
|
||||||
|
"-Ikernel",
|
||||||
|
"-o",
|
||||||
|
"obj/kernel/common.S.o",
|
||||||
|
"kernel/common.S"
|
||||||
|
],
|
||||||
|
"directory": "/home/slinky/source/RockOS",
|
||||||
|
"file": "/home/slinky/source/RockOS/kernel/common.S",
|
||||||
|
"output": "/home/slinky/source/RockOS/obj/kernel/common.S.o"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
"/home/slinky/opt/cross/bin/i686-elf-gcc",
|
||||||
@@ -553,12 +553,12 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/gdt.S.o",
|
"obj/kernel/memory/mm.S.o",
|
||||||
"kernel/gdt.S"
|
"kernel/memory/mm.S"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/gdt.S",
|
"file": "/home/slinky/source/RockOS/kernel/memory/mm.S",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/gdt.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/memory/mm.S.o"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"arguments": [
|
"arguments": [
|
||||||
@@ -570,11 +570,11 @@
|
|||||||
"-Wextra",
|
"-Wextra",
|
||||||
"-Ikernel",
|
"-Ikernel",
|
||||||
"-o",
|
"-o",
|
||||||
"obj/kernel/interrupts.S.o",
|
"obj/kernel/gdt.S.o",
|
||||||
"kernel/interrupts.S"
|
"kernel/gdt.S"
|
||||||
],
|
],
|
||||||
"directory": "/home/slinky/source/RockOS",
|
"directory": "/home/slinky/source/RockOS",
|
||||||
"file": "/home/slinky/source/RockOS/kernel/interrupts.S",
|
"file": "/home/slinky/source/RockOS/kernel/gdt.S",
|
||||||
"output": "/home/slinky/source/RockOS/obj/kernel/interrupts.S.o"
|
"output": "/home/slinky/source/RockOS/obj/kernel/gdt.S.o"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include <lib/stream.h>
|
#include <lib/stream.h>
|
||||||
|
|
||||||
|
#include "vga.h"
|
||||||
|
|
||||||
#define VGA_WIDTH 80
|
#define VGA_WIDTH 80
|
||||||
#define VGA_HEIGHT 25
|
#define VGA_HEIGHT 25
|
||||||
#define VGA_MEMORY (0xB8000 + 0xC0000000)
|
#define VGA_MEMORY (0xB8000 + 0xC0000000)
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
#ifndef DVGA_H
|
#ifndef DVGA_H
|
||||||
#define DVGA_H
|
#define DVGA_H
|
||||||
|
|
||||||
|
#include <vfs.h>
|
||||||
|
|
||||||
void vga_init();
|
void vga_init();
|
||||||
void vga_putchar(char c);
|
void vga_putchar(char c);
|
||||||
|
|
||||||
|
uint32_t vga_write(vfs_node_t* node, uint32_t offset, uint32_t size, uint8_t* buf);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
12
kernel/elf.c
12
kernel/elf.c
@@ -5,7 +5,7 @@
|
|||||||
#include <lib/memory.h>
|
#include <lib/memory.h>
|
||||||
|
|
||||||
uint32_t load_elf_program(const char* prgm) {
|
uint32_t load_elf_program(const char* prgm) {
|
||||||
int fd = open(prgm, 0);
|
int fd = vfs_open(prgm, 0);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ uint32_t load_elf_program(const char* prgm) {
|
|||||||
elf_header_t* e_hdr = kalloc(sizeof(elf_header_t));
|
elf_header_t* e_hdr = kalloc(sizeof(elf_header_t));
|
||||||
memset((void*)e_hdr, 0, sizeof(elf_header_t));
|
memset((void*)e_hdr, 0, sizeof(elf_header_t));
|
||||||
|
|
||||||
uint32_t bytes_rd = read(fd, e_hdr, sizeof(elf_header_t));
|
uint32_t bytes_rd = vfs_read(fd, e_hdr, sizeof(elf_header_t));
|
||||||
if (bytes_rd <= 0) {
|
if (bytes_rd <= 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@ uint32_t load_elf_program(const char* prgm) {
|
|||||||
uint32_t heap_start = 0;
|
uint32_t heap_start = 0;
|
||||||
|
|
||||||
for (uint32_t i = 0; i < e_hdr->e_phnum; i++) {
|
for (uint32_t i = 0; i < e_hdr->e_phnum; i++) {
|
||||||
fseek(fd, ph_table_ptr);
|
vfs_seek(fd, ph_table_ptr);
|
||||||
memset((void*)ph, 0, sizeof(elf_program_header_t));
|
memset((void*)ph, 0, sizeof(elf_program_header_t));
|
||||||
read(fd, ph, sizeof(elf_program_header_t));
|
vfs_read(fd, ph, sizeof(elf_program_header_t));
|
||||||
|
|
||||||
if (ph->p_type == PT_LOAD) {
|
if (ph->p_type == PT_LOAD) {
|
||||||
uint32_t vstart = ph->p_vaddr;
|
uint32_t vstart = ph->p_vaddr;
|
||||||
@@ -44,8 +44,8 @@ uint32_t load_elf_program(const char* prgm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint32_t data_ptr = ph->p_offset;
|
uint32_t data_ptr = ph->p_offset;
|
||||||
fseek(fd, data_ptr);
|
vfs_seek(fd, data_ptr);
|
||||||
read(fd, (void*)vstart, ph->p_filesz);
|
vfs_read(fd, (void*)vstart, ph->p_filesz);
|
||||||
|
|
||||||
// 0 out bss
|
// 0 out bss
|
||||||
if (ph->p_memsz > ph->p_filesz) {
|
if (ph->p_memsz > ph->p_filesz) {
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ void kmain(uint32_t magic, multiboot_info* mbi) {
|
|||||||
kprintf("failed to load initrd\n");
|
kprintf("failed to load initrd\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
mount(vfs_root, initrd_root);
|
vfs_mount(vfs_root, initrd_root);
|
||||||
kprintf("initrd read, mounted @ /\n");
|
kprintf("initrd read, mounted @ /\n");
|
||||||
|
|
||||||
disable_interrupts();
|
disable_interrupts();
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ void memcpy(const void* src, void* dst, size_t sz) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void memset(const uint8_t* dst, uint8_t val, size_t sz) {
|
void memset(uint8_t* dst, uint8_t val, size_t sz) {
|
||||||
for (size_t i = 0; i < sz; i++) {
|
for (size_t i = 0; i < sz; i++) {
|
||||||
((uint8_t*)dst)[i] = val;
|
((uint8_t*)dst)[i] = val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
void memcpy(const void* src, void* dst, size_t sz);
|
void memcpy(const void* src, void* dst, size_t sz);
|
||||||
void memset(const uint8_t* dst, uint8_t val, size_t sz);
|
void memset(uint8_t* dst, uint8_t val, size_t sz);
|
||||||
|
|
||||||
int strcmp(const char *s1, const char *s2);
|
int strcmp(const char *s1, const char *s2);
|
||||||
int strncmp(const char *s1, const char *s2, size_t n);
|
int strncmp(const char *s1, const char *s2, size_t n);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#ifndef KSTRING_H
|
#ifndef KSTRING_H
|
||||||
#define KSTRING_H
|
#define KSTRING_H
|
||||||
|
|
||||||
char* strtok_r(char* str, const char* delim, char** saveptr);
|
char* strtok_r(char *s, const char *delim, char **saveptr);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -2,48 +2,63 @@
|
|||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
static int is_delim(char c, const char* delim) {
|
char* strtok_r(char *s, const char *delim, char **saveptr) {
|
||||||
while (*delim) {
|
char *token;
|
||||||
if (c == *delim) {
|
|
||||||
return 1;
|
if (!saveptr) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s) {
|
||||||
|
s = *saveptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s || *s == '\0') {
|
||||||
|
*saveptr = s;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (*s != '\0') {
|
||||||
|
const char *d = delim;
|
||||||
|
int is_delim = 0;
|
||||||
|
while (*d != '\0') {
|
||||||
|
if (*s == *d) {
|
||||||
|
is_delim = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
d++;
|
||||||
}
|
}
|
||||||
delim++;
|
if (!is_delim) {
|
||||||
}
|
break;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strtok_r(char* str, const char* delim, char** saveptr) {
|
|
||||||
if (saveptr == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* next_token = (str != NULL) ? str : *saveptr;
|
|
||||||
|
|
||||||
if (next_token == NULL || *next_token == '\0') {
|
|
||||||
*saveptr = NULL;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (*next_token && is_delim(*next_token, delim)) {
|
|
||||||
next_token++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*next_token == '\0') {
|
|
||||||
*saveptr = next_token;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* token_start = next_token;
|
|
||||||
|
|
||||||
while (*next_token) {
|
|
||||||
if (is_delim(*next_token, delim)) {
|
|
||||||
*next_token = '\0'; // Destructively null-terminate the token
|
|
||||||
*saveptr = next_token + 1; // Save the position right after the null-terminator
|
|
||||||
return token_start;
|
|
||||||
}
|
}
|
||||||
next_token++;
|
s++;
|
||||||
}
|
}
|
||||||
|
|
||||||
*saveptr = next_token;
|
if (*s == '\0') {
|
||||||
return token_start;
|
*saveptr = s;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
token = s;
|
||||||
|
|
||||||
|
while (*s != '\0') {
|
||||||
|
const char *d = delim;
|
||||||
|
int is_delim = 0;
|
||||||
|
while (*d != '\0') {
|
||||||
|
if (*s == *d) {
|
||||||
|
is_delim = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
d++;
|
||||||
|
}
|
||||||
|
if (is_delim) {
|
||||||
|
*s = '\0';
|
||||||
|
*saveptr = s + 1;
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*saveptr = s;
|
||||||
|
return token;
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ static int32_t sys_read(int fd, void* buf, size_t count) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int32_t sys_open(const char* filename, int flags) {
|
static int32_t sys_open(const char* filename, int flags) {
|
||||||
return open(filename, flags);
|
return vfs_open(filename, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t sys_close(int fd) {
|
static int32_t sys_close(int fd) {
|
||||||
|
|||||||
46
kernel/vfs.c
46
kernel/vfs.c
@@ -3,6 +3,8 @@
|
|||||||
#include <scheduler.h>
|
#include <scheduler.h>
|
||||||
|
|
||||||
#include <lib/memory.h>
|
#include <lib/memory.h>
|
||||||
|
#include <lib/string.h>
|
||||||
|
#include <lib/print.h>
|
||||||
|
|
||||||
vfs_node_t* root = NULL;
|
vfs_node_t* root = NULL;
|
||||||
|
|
||||||
@@ -19,18 +21,29 @@ vfs_node_t* vfs_create_root() {
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mount(vfs_node_t* _mnt, vfs_node_t* _fs) {
|
void vfs_mount(vfs_node_t* _mnt, vfs_node_t* _fs) {
|
||||||
if (!_fs || !_mnt || !(_mnt->flags & VFS_DIRECTORY)) return;
|
if (!_fs || !_mnt || !(_mnt->flags & VFS_DIRECTORY)) return;
|
||||||
_mnt->mnt = _fs;
|
_mnt->mnt = _fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static vfs_node_t* lookup(const char* path) {
|
vfs_node_t* vfs_find(const char* path) {
|
||||||
if (path[0] != '/') return NULL;
|
if (path[0] != '/') return NULL;
|
||||||
vfs_node_t* current = root;
|
vfs_node_t* current = root;
|
||||||
|
|
||||||
if (current->mnt) {
|
char* sav;
|
||||||
current = current->mnt;
|
|
||||||
|
size_t path_sz = strlen(path) + 1;
|
||||||
|
char* path_cpy = kalloc(path_sz);
|
||||||
|
memset((uint8_t*)path_cpy, 0, path_sz);
|
||||||
|
memcpy(path, path_cpy, path_sz);
|
||||||
|
|
||||||
|
char* tkn = strtok_r(path_cpy, "/", &sav);
|
||||||
|
|
||||||
|
while (tkn != NULL) {
|
||||||
|
kprintf("Found tkn: %s\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kfree(path_cpy);
|
||||||
|
|
||||||
const char* cmp = path + 1;
|
const char* cmp = path + 1;
|
||||||
if (*cmp == '\0') return current;
|
if (*cmp == '\0') return current;
|
||||||
@@ -42,8 +55,12 @@ static vfs_node_t* lookup(const char* path) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int open(const char* _path, int flags) {
|
vfs_node_t* vfs_mkdir(vfs_node_t* parent, const char* name) {
|
||||||
vfs_node_t* file = lookup(_path);
|
vfs_node_t* node = kalloc(sizeof(vfs_node_t));
|
||||||
|
}
|
||||||
|
|
||||||
|
int vfs_open(const char* _path, int flags) {
|
||||||
|
vfs_node_t* file = vfs_find(_path);
|
||||||
if (!file) return -1;
|
if (!file) return -1;
|
||||||
|
|
||||||
file_t* f = (file_t*)kalloc(sizeof(file_t));
|
file_t* f = (file_t*)kalloc(sizeof(file_t));
|
||||||
@@ -54,7 +71,7 @@ int open(const char* _path, int flags) {
|
|||||||
return alloc_fd(f);
|
return alloc_fd(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int read(int fd, void* buf, size_t sz) {
|
int vfs_read(int fd, void* buf, size_t sz) {
|
||||||
process_t* curr_p = current_task();
|
process_t* curr_p = current_task();
|
||||||
if (fd < 0 || fd >= MAX_PROCESS_FDS || !curr_p->fd_table[fd]->node) {
|
if (fd < 0 || fd >= MAX_PROCESS_FDS || !curr_p->fd_table[fd]->node) {
|
||||||
return -1;
|
return -1;
|
||||||
@@ -70,18 +87,7 @@ int read(int fd, void* buf, size_t sz) {
|
|||||||
return bytes_read;
|
return bytes_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fstat(int fd, file_t* dst) {
|
int vfs_seek(int fd, size_t offset) {
|
||||||
process_t* curr_p = current_task();
|
|
||||||
if (fd < 0 || fd >= MAX_PROCESS_FDS || !curr_p->fd_table[fd]->node) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
file_t* src = curr_p->fd_table[fd];
|
|
||||||
memcpy(src, dst, sizeof(file_t));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fseek(int fd, size_t offset) {
|
|
||||||
process_t* curr_p = current_task();
|
process_t* curr_p = current_task();
|
||||||
if (fd < 0 || fd >= MAX_PROCESS_FDS || !curr_p->fd_table[fd]->node) {
|
if (fd < 0 || fd >= MAX_PROCESS_FDS || !curr_p->fd_table[fd]->node) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -90,7 +96,7 @@ int fseek(int fd, size_t offset) {
|
|||||||
file_t* file = curr_p->fd_table[fd];
|
file_t* file = curr_p->fd_table[fd];
|
||||||
file->offset = offset;
|
file->offset = offset;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int alloc_fd(file_t* f) {
|
int alloc_fd(file_t* f) {
|
||||||
process_t* curr_p = current_task();
|
process_t* curr_p = current_task();
|
||||||
|
|||||||
10
kernel/vfs.h
10
kernel/vfs.h
@@ -36,13 +36,13 @@ typedef struct {
|
|||||||
} file_t;
|
} file_t;
|
||||||
|
|
||||||
vfs_node_t* vfs_create_root();
|
vfs_node_t* vfs_create_root();
|
||||||
|
vfs_node_t* vfs_mkdir(vfs_node_t* parent, const char* name);
|
||||||
|
|
||||||
void mount(vfs_node_t* _mnt, vfs_node_t* _fs);
|
void vfs_mount(vfs_node_t* _mnt, vfs_node_t* _fs);
|
||||||
int open(const char* path, int flags);
|
int vfs_open(const char* path, int flags);
|
||||||
int read(int fd, void* buf, size_t sz);
|
int vfs_read(int fd, void* buf, size_t sz);
|
||||||
|
|
||||||
int fstat(int fd, file_t* _f);
|
int vfs_seek(int fd, size_t offset);
|
||||||
int fseek(int fd, size_t offset);
|
|
||||||
|
|
||||||
int alloc_fd(file_t* f);
|
int alloc_fd(file_t* f);
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user