From b8faf9dd8edef83fe77be252c1dda5106f56a38d Mon Sep 17 00:00:00 2001 From: xamidev Date: Fri, 19 Jul 2024 17:40:53 +0200 Subject: [PATCH] Restructuration part 2: libc, programs --- iso/boot/kernel.elf | Bin 21112 -> 21124 bytes makefile | 16 +++++++++++----- os.iso | Bin 0 -> 497664 bytes src/{ => kernel}/gdt.c | 0 src/{ => kernel}/gdt.h | 0 src/{ => kernel}/idt.c | 0 src/{ => kernel}/idt.h | 0 src/{ => kernel}/io.h | 2 +- src/{ => kernel}/io.s | 0 src/{ => kernel}/irq.c | 0 src/{ => kernel}/isr.c | 2 +- src/{ => kernel}/kb.c | 2 +- src/{ => kernel}/kmain.c | 3 +-- src/{ => kernel}/loader.s | 0 src/{ => kernel}/serial.c | 0 src/{ => kernel}/serial.h | 0 src/{ => kernel}/system.c | 0 src/{ => kernel}/system.h | 0 src/{ => kernel}/timer.c | 2 +- src/{ => libc}/stdint.h | 0 src/{ => libc}/stdio.c | 2 +- src/{ => libc}/stdio.h | 0 src/{ => libc}/string.c | 0 src/{ => libc}/string.h | 0 24 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 os.iso rename src/{ => kernel}/gdt.c (100%) rename src/{ => kernel}/gdt.h (100%) rename src/{ => kernel}/idt.c (100%) rename src/{ => kernel}/idt.h (100%) rename src/{ => kernel}/io.h (89%) rename src/{ => kernel}/io.s (100%) rename src/{ => kernel}/irq.c (100%) rename src/{ => kernel}/isr.c (99%) rename src/{ => kernel}/kb.c (98%) rename src/{ => kernel}/kmain.c (92%) rename src/{ => kernel}/loader.s (100%) rename src/{ => kernel}/serial.c (100%) rename src/{ => kernel}/serial.h (100%) rename src/{ => kernel}/system.c (100%) rename src/{ => kernel}/system.h (100%) rename src/{ => kernel}/timer.c (92%) rename src/{ => libc}/stdint.h (100%) rename src/{ => libc}/stdio.c (99%) rename src/{ => libc}/stdio.h (100%) rename src/{ => libc}/string.c (100%) rename src/{ => libc}/string.h (100%) diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index faa52ed84b85df36738856cfb3439c323b6a3889..36272c2179d190d3d384dc72728ed799be77e642 100755 GIT binary patch delta 4037 zcmbW44Nz3q702&gcG(3Mc zS&Wj!&f1GpGnHx6kVvAoW;RWm#B?-}no?~w&D6GPlul@uf~_QKuvy*y@7o7^Ni&_c zJM(zwch9-!>)!j`V`h-{yhvSEjkfwgN~!L;g^=s7Zuu-SW@jcLTH^mnxOL*%;@&B( zr8LHUAu63dlzQVD2($!ouqpYl9S~{$Ll>CmIqtkWkAa$|R(XsB% z7#2$3X9nvKwXs*N9rUMcQSuJDk_{y17F-G?#4#dye)EaX=W^D2e>Gg!JMOu?fDqll zLPV-FIIE1keXf(Sgt+PzaE{I-Znk9eJ zTn=G>UlK=u&kPxbU;2t(i82>pjblpd*~`{sWYZ0-E90?QC1t3Yx=?W(uf)5Y=2b>8+{E|=0w)Ee!v@yv$LQxiLxovO(T zVPn}Ab4-Ym1g|^tu@A5@JV7kN78^fln4cVP)}RsbDow1!mJ{5{&Q zJ$yBa9k;DtL9lZCcgCSrC8r|wzTCHr6GI&7Ej;h9KOTxQr;b~Ex9Wj7r&p`CiiOn7JFWcnE;2v5Ktmal*k zf3i5BnzZq0PR29rz2Ia#uj-mwPuX3bl~GNU&*U1HpWm#8)6(Me?Qx&;9PsN`yoqN5 zfn8_|^{iLw)QT-&Rk?}s4s^bI*z$jr@o*sAWce4D(d<>rQ0i0r?%Qre-}m@c@_#7t zf2^=U>DjyrXBT<>XY&^sOYhl@t))w$5o}9dzP^;hL^%6VUXdXLa`*7DaCR;40eXTh z%)d@Y+{UGu)Nm9>rF;0HF!zcA8(r`-G}kd=b=JM+EW5G4oc31Th;%mv536BLb@UhQ#4woKJ zpfp_NxU4vF+y2YT3HuLlecm2pRsS}~jUL1$1{hK&|5I?n^|^WZOA88%mfcs}uxWE+ z)1&T7_b<}9X~`KX--oG{5(cACyvMChTpXB z$9_TmJMDW7(!JHSANdESeQ$GNwo2Il7PwD0JD?$#z%L2>XYeb*0sY6|Rr)zL5e+4z zuY7hOj6||;tV)uTFxr#rAEhLO6oMx*{cO_cNhR36P*UE}CUk!dc%?-mH{qW1M)2l% ziIk|k4IH2DpD#h*2KGUJT-A4i&!$ME9$zGwFO%IEsECt@O*QBPUsUUoh=v>hyD))& zy6}MC2k%wuxr>k{y{c)~eBoR06eEwUwH_qA18gd!~3rZvsi~vz2jEsPn z&KYRPDEQM@i5PI_4*r09oDkqcaG}5-fvxECtiK6xf0RTj)dFsTJqeQXt!0woFbJ*C z3jqz_AxTm`<#@noaF`Gv4!l*cPXZqlI2rH%wdffCtm5+*K~GR1p8raL8Q^_L5N1T? z73W~UiwyCNqD&|QzaTiQ1Yeok6I#*$t{3#p;7v)A@}0&5wt=le!ruaCV?GZU1${U8 zJO24Hwz!7u#eh#(^FHuxA;1A}7dENifr0dco3SbRhanF*03M%9FqpW(Ul-=T0Ve3^ zkZS)+@De2FDc?|d#1lDK_Y!@8-6+9*+I0gP85_(FhD3tiXC1`1h!ePY7zf6(f zfEv&QzAN~P1^h&Uo=TX9>8wo6Y4S0k2Rc96X2isV{}b<^-Y^9)!@51ex+ z*e)b=0GuoY{2sUv&jGvY|7Gy81WBGd*C#M=6&*-a4MxC6gbtho|3u*T!DB*zi{K&@ zkgd+Y3eFWa-8gtCQBwXP;RU~q&D3R;CGw#Sz zs_OTE4-0xH`10bwvHh+V`+vDm;UO5@5&{l@&teUu;E*5F7r{FPheyFF!Y2GVctf&8 z?x+d81OA6#e+KLkm^8DN3OgIGh+>B-szTZ~=WK0iZ*AJfW-6Wv_KWV0%A;Clt!|`O z*q-Vn9e)m9VHc`n*{N!yj-QY*P^ykUe#Vt?sm7?|Z_o*Ma!ov?XW0X_skDGK)W-e` D{~=%0 delta 3925 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 k+vln(pSdDjWPd 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 literal 0 HcmV?d00001 diff --git a/src/gdt.c b/src/kernel/gdt.c similarity index 100% rename from src/gdt.c rename to src/kernel/gdt.c diff --git a/src/gdt.h b/src/kernel/gdt.h similarity index 100% rename from src/gdt.h rename to src/kernel/gdt.h diff --git a/src/idt.c b/src/kernel/idt.c similarity index 100% rename from src/idt.c rename to src/kernel/idt.c diff --git a/src/idt.h b/src/kernel/idt.h similarity index 100% rename from src/idt.h rename to src/kernel/idt.h diff --git a/src/io.h b/src/kernel/io.h similarity index 89% rename from src/io.h rename to src/kernel/io.h index 24fba56..6480303 100644 --- a/src/io.h +++ b/src/kernel/io.h @@ -1,7 +1,7 @@ #ifndef INCLUDE_IO_H #define INCLUDE_IO_H -#include "stdint.h" +#include "../libc/stdint.h" void outb(unsigned short port, unsigned char data); unsigned char inb(unsigned short port); diff --git a/src/io.s b/src/kernel/io.s similarity index 100% rename from src/io.s rename to src/kernel/io.s diff --git a/src/irq.c b/src/kernel/irq.c similarity index 100% rename from src/irq.c rename to src/kernel/irq.c diff --git a/src/isr.c b/src/kernel/isr.c similarity index 99% rename from src/isr.c rename to src/kernel/isr.c index 373bf95..049d722 100644 --- a/src/isr.c +++ b/src/kernel/isr.c @@ -1,5 +1,5 @@ #include "system.h" -#include "stdio.h" +#include "../libc/stdio.h" #include "idt.h" extern void isr0(); diff --git a/src/kb.c b/src/kernel/kb.c similarity index 98% rename from src/kb.c rename to src/kernel/kb.c index 23e75ca..3152868 100644 --- a/src/kb.c +++ b/src/kernel/kb.c @@ -1,5 +1,5 @@ #include "io.h" -#include "stdio.h" +#include "../libc/stdio.h" #include "system.h" unsigned char kbdus[128] = diff --git a/src/kmain.c b/src/kernel/kmain.c similarity index 92% rename from src/kmain.c rename to src/kernel/kmain.c index 413814b..5edeba0 100644 --- a/src/kmain.c +++ b/src/kernel/kmain.c @@ -1,4 +1,4 @@ -#include "stdio.h" +#include "../libc/stdio.h" #include "serial.h" #include "gdt.h" #include "idt.h" @@ -29,7 +29,6 @@ int kmain(int retvalue) // TODO: Fix scrolling bug (framebuffer driver) // TODO: Fix keyboard driver bug (some keys mapped weirdly) + add suport for SHIFT and backspace (deleting character) // TODO: Grub modules to load programs - // TODO: Folder and build process restructuration //timer_install(); keyboard_install(); diff --git a/src/loader.s b/src/kernel/loader.s similarity index 100% rename from src/loader.s rename to src/kernel/loader.s diff --git a/src/serial.c b/src/kernel/serial.c similarity index 100% rename from src/serial.c rename to src/kernel/serial.c diff --git a/src/serial.h b/src/kernel/serial.h similarity index 100% rename from src/serial.h rename to src/kernel/serial.h diff --git a/src/system.c b/src/kernel/system.c similarity index 100% rename from src/system.c rename to src/kernel/system.c diff --git a/src/system.h b/src/kernel/system.h similarity index 100% rename from src/system.h rename to src/kernel/system.h diff --git a/src/timer.c b/src/kernel/timer.c similarity index 92% rename from src/timer.c rename to src/kernel/timer.c index ddc308e..36539a7 100644 --- a/src/timer.c +++ b/src/kernel/timer.c @@ -1,5 +1,5 @@ #include "system.h" -#include "stdio.h" +#include "../libc/stdio.h" int timer_ticks = 0; diff --git a/src/stdint.h b/src/libc/stdint.h similarity index 100% rename from src/stdint.h rename to src/libc/stdint.h diff --git a/src/stdio.c b/src/libc/stdio.c similarity index 99% rename from src/stdio.c rename to src/libc/stdio.c index 1a7b730..f4d8994 100644 --- a/src/stdio.c +++ b/src/libc/stdio.c @@ -1,4 +1,4 @@ -#include "io.h" +#include "../kernel/io.h" #include "stdio.h" #include "string.h" #include "stdint.h" diff --git a/src/stdio.h b/src/libc/stdio.h similarity index 100% rename from src/stdio.h rename to src/libc/stdio.h diff --git a/src/string.c b/src/libc/string.c similarity index 100% rename from src/string.c rename to src/libc/string.c diff --git a/src/string.h b/src/libc/string.h similarity index 100% rename from src/string.h rename to src/libc/string.h