From 016ee329872f858913bf6b51a3dd747c842fe22a Mon Sep 17 00:00:00 2001 From: kaguya Date: Thu, 16 Apr 2026 00:37:30 -0400 Subject: [PATCH] feat: update .gitignore and enhance ext2 file timestamps Added back g_Unixseconds to the ext2 driver Signed-off-by: kaguya --- .gitignore | 3 ++- .vscode/settings.json | 3 ++- ext2_root/init.elf | Bin 5144 -> 5104 bytes src/fs/ext2.c | 31 ++++++++++++++++--------------- src/main.c | 5 +++-- user/build/init.elf | Bin 5144 -> 5104 bytes user/build/init.o | Bin 1464 -> 1424 bytes 7 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index d163863..709eb78 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -build/ \ No newline at end of file +build/ +user/build/* \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3fcba3d..9b65846 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -55,5 +55,6 @@ "C_Cpp_Runner.useLeakSanitizer": false, "C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.useLinkTimeOptimization": false, - "C_Cpp_Runner.msvcSecureNoWarnings": false + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "C_Cpp.errorSquiggles": "enabled" } \ No newline at end of file diff --git a/ext2_root/init.elf b/ext2_root/init.elf index ecfd81fbb4012319dfbc1019765cdc727b242933..203b9618605bee2b9fdf75249db1407fd0061e9d 100755 GIT binary patch delta 226 zcmbQC@j-opgpd(~0|N*^NCt)vf)lmO40nLV7#LtQg8)Q;1xSIg2bAvt)#ovBqPid! zLHUg@Jov?4|9kQC|Ns9U#}C+m^cw!>XMO#TVRD{85M##Vg95^=EkIeO$u|Yc8J#Bw z3W_rtP0kdQXJne(Dfphzb#kSUJ}2Cw$s2{tIV+&nR!sgVWY4%`vZ1g&(+z>iMZ$KB Q4U;zt+cPeo{83mP0B(~vMgRZ+ delta 307 zcmeyMK0{-Igitht0|N*^NCpN8p@~{%h7UkOK=1%e0to>Kg9S)|Z~>HG0M%D8aiY2) z7D4%qFFg3|48QGQ1Zvvv2qZi@Kk>6dxK2PWjO`3&zy9~)!vFvOJ&qr+0Vy^7&(He$ z-()v|AV~+Hur^Q(1VDBh0C5aRZ1P5da>*RH^Fi_q3?e`*z`)25J=sxEo>6;pqTqYR zyvcz=`kZhFPwo^l=Uf2Qw_x%~A$!ILlR1U$C$AS~o$M=Y&A4K6r?5Tec|ov&4DORB H3d;ik#sxwQ diff --git a/src/fs/ext2.c b/src/fs/ext2.c index 2bc8ff0..1b7ec31 100644 --- a/src/fs/ext2.c +++ b/src/fs/ext2.c @@ -5,6 +5,7 @@ #include #include "string.h" #include "mp/spinlock.h" +#include "arch/x86_64/pit.h" // ── module state ───────────────────────────────────────────────────────────── @@ -607,8 +608,8 @@ bool ext2_write_file_internal(ext2_inode_t* inode, uint32_t inum, } inode->i_blocks = ((new_size + block_size - 1) / block_size) * (block_size / 512); - //inode->i_mtime = (uint32_t)g_Unixseconds; - //inode->i_ctime = (uint32_t)g_Unixseconds; + inode->i_mtime = (uint32_t)g_Unixseconds; + inode->i_ctime = (uint32_t)g_Unixseconds; kfree(tmp); ext2_write_inode_internal(inum, inode); return true; @@ -653,8 +654,8 @@ bool ext2_truncate_internal(ext2_inode_t* inode, uint32_t inum, uint32_t new_siz // extending: sparse — just update the size field inode->i_size = new_size; - //inode->i_mtime = (uint32_t)g_Unixseconds; - //inode->i_ctime = (uint32_t)g_Unixseconds; + inode->i_mtime = (uint32_t)g_Unixseconds; + inode->i_ctime = (uint32_t)g_Unixseconds; return ext2_write_inode_internal(inum, inode); } @@ -765,7 +766,7 @@ static bool dir_add_entry_internal(ext2_inode_t* dir, uint32_t dir_inum, dir->i_size += block_size; dir->i_blocks = (dir->i_size / block_size) * (block_size / 512); - //dir->i_mtime = (uint32_t)g_Unixseconds; + dir->i_mtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(dir_inum, dir); kfree(buf); return true; @@ -799,7 +800,7 @@ static bool dir_remove_entry_internal(ext2_inode_t* dir, uint32_t dir_inum, cons else e->inode = 0; // first entry: zero inode ext2_write_block_raw(phys, buf); - //dir->i_mtime = (uint32_t)g_Unixseconds; + dir->i_mtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(dir_inum, dir); kfree(buf); return true; @@ -912,7 +913,7 @@ bool ext2_read_dir_internal(ext2_inode_t* dir) { uint8_t nl = e->name_len > EXT2_NAME_LEN ? EXT2_NAME_LEN : e->name_len; memcpy(name, e->name, nl); name[nl] = '\0'; - printf(" %-32s inode=%-6u %s\n", + printf(" %s inode=%u %s\n", name, e->inode, ext2_file_type_string(e->file_type)); } off += e->rec_len; @@ -1017,7 +1018,7 @@ bool ext2_create_file_internal(ext2_inode_t* dir, uint32_t dir_inum, ext2_inode_t inode = {0}; inode.i_mode = EXT2_S_IFREG | 0644; inode.i_links_count = 1; - //inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds; + inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(inum, &inode); if (!dir_add_entry_internal(dir, dir_inum, inum, name, EXT2_FT_REG_FILE)) { @@ -1060,7 +1061,7 @@ bool ext2_mkdir_internal(ext2_inode_t* parent, uint32_t parent_inum, dir.i_size = block_size; dir.i_blocks = block_size / 512; dir.i_block[0] = phys; - //dir.i_atime = dir.i_ctime = dir.i_mtime = (uint32_t)g_Unixseconds; + dir.i_atime = dir.i_ctime = dir.i_mtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(inum, &dir); uint8_t* buf = kmalloc(block_size); @@ -1125,11 +1126,11 @@ bool ext2_unlink_internal(ext2_inode_t* dir, uint32_t dir_inum, const char* name fi.i_links_count--; if (fi.i_links_count == 0) { ext2_free_inode_blocks_internal(&fi); - //fi.i_dtime = (uint32_t)g_Unixseconds; + fi.i_dtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(inum, &fi); ext2_free_inode_internal(inum, false); } else { - //fi.i_ctime = (uint32_t)g_Unixseconds; + fi.i_ctime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(inum, &fi); } ext2_sync(); @@ -1166,7 +1167,7 @@ bool ext2_rmdir_internal(ext2_inode_t* parent, uint32_t parent_inum, const char* ext2_free_inode_blocks_internal(&dir); dir.i_links_count = 0; - //dir.i_dtime = (uint32_t)g_Unixseconds; + dir.i_dtime = (uint32_t)g_Unixseconds; ext2_write_inode_internal(inum, &dir); ext2_free_inode_internal(inum, true); @@ -1272,7 +1273,7 @@ bool ext2_symlink_internal(ext2_inode_t* dir, uint32_t dir_inum, inode.i_mode = EXT2_S_IFLNK | 0777; inode.i_links_count = 1; inode.i_size = tlen; - //inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds; + inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds; if (tlen < 60) { // fast symlink: target stored directly in i_block[] @@ -1368,7 +1369,7 @@ bool ext2_chmod_internal(uint32_t inum, uint16_t mode) { ext2_inode_t inode; if (!ext2_read_inode_internal(inum, &inode)) return false; inode.i_mode = (inode.i_mode & 0xF000) | (mode & 0x0FFF); - //inode.i_ctime = (uint32_t)g_Unixseconds; + inode.i_ctime = (uint32_t)g_Unixseconds; return ext2_write_inode_internal(inum, &inode); } @@ -1377,7 +1378,7 @@ bool ext2_chown_internal(uint32_t inum, uint16_t uid, uint16_t gid) { if (!ext2_read_inode_internal(inum, &inode)) return false; inode.i_uid = uid; inode.i_gid = gid; - //inode.i_ctime = (uint32_t)g_Unixseconds; + inode.i_ctime = (uint32_t)g_Unixseconds; return ext2_write_inode_internal(inum, &inode); } diff --git a/src/main.c b/src/main.c index e5322e6..45a01ca 100644 --- a/src/main.c +++ b/src/main.c @@ -203,6 +203,7 @@ void kmain(void) { x86_64_PIT_Initialize(1000); asm volatile("sti"); calibrate_tsc(); + //while (1) asm volatile("hlt"); @@ -425,7 +426,7 @@ void kmain(void) { } - pci_init(); + /*pci_init(); pci_device_t hda; if (pci_find_hda(&hda)) { @@ -438,7 +439,7 @@ void kmain(void) { } } else { printf("[PCI] No HDA controller found!\n"); - } + }*/ //syscall_init(); diff --git a/user/build/init.elf b/user/build/init.elf index ecfd81fbb4012319dfbc1019765cdc727b242933..203b9618605bee2b9fdf75249db1407fd0061e9d 100755 GIT binary patch delta 226 zcmbQC@j-opgpd(~0|N*^NCt)vf)lmO40nLV7#LtQg8)Q;1xSIg2bAvt)#ovBqPid! zLHUg@Jov?4|9kQC|Ns9U#}C+m^cw!>XMO#TVRD{85M##Vg95^=EkIeO$u|Yc8J#Bw z3W_rtP0kdQXJne(Dfphzb#kSUJ}2Cw$s2{tIV+&nR!sgVWY4%`vZ1g&(+z>iMZ$KB Q4U;zt+cPeo{83mP0B(~vMgRZ+ delta 307 zcmeyMK0{-Igitht0|N*^NCpN8p@~{%h7UkOK=1%e0to>Kg9S)|Z~>HG0M%D8aiY2) z7D4%qFFg3|48QGQ1Zvvv2qZi@Kk>6dxK2PWjO`3&zy9~)!vFvOJ&qr+0Vy^7&(He$ z-()v|AV~+Hur^Q(1VDBh0C5aRZ1P5da>*RH^Fi_q3?e`*z`)25J=sxEo>6;pqTqYR zyvcz=`kZhFPwo^l=Uf2Qw_x%~A$!ILlR1U$C$AS~o$M=Y&A4K6r?5Tec|ov&4DORB H3d;ik#sxwQ diff --git a/user/build/init.o b/user/build/init.o index 9c6a95c0445e5ab19932d34a49d494e7f67e95ed..7f50eb98d40ac21b64c6c26a3ae1e0384d9c8250 100644 GIT binary patch delta 98 zcmdnNJ%M|I24lcPP4|g2WMrDG$k@-ww0R@rb4DO%CbKzX(d3KF_Kba#1zGGF vCrl0mk_RSF1d=NzUu3bLY|qF#S(McpB*SXYd4rJw3`!>(G73-DVden<-LV^( delta 149 zcmbQhy@Pv#24lrUO?OShZ#x(n7#Q|D0tt`KPyDP9t`m?8V>^S{6AR=gPRL-?o*c*| zKZ%)TvJ7JmqxR-b#^;Pcu|j5Z#@UlsGTSq5pUlW8J^2PR&tw4>3C10hHCgN#Urf#f fk{2eg1dIIBG;0~63>ASj*ukx3o^Z&4=+