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