diff --git a/include/trap/syscallDataStruct.h b/include/trap/syscallDataStruct.h
index 0a08471f56d927268a846c87f90a84019dc1325e..8ae07ec6398873517e53b26efc8b6e7700441843 100644
--- a/include/trap/syscallDataStruct.h
+++ b/include/trap/syscallDataStruct.h
@@ -1,6 +1,8 @@
 #ifndef _SYSCALL_H
 #define _SYSCALL_H
 
+#include <types.h>
+
 struct utsname {
 	char sysname[65];
 	char nodename[65];
@@ -23,7 +25,12 @@ struct timespec {
 };
 
 struct DirentUser {
-	// TODO
+	u64 d_ino;	// 索引结点号
+    i64 d_off;	// 到下一个dirent的偏移
+    u16 d_reclen;	// 当前dirent的长度
+    u8 d_type;	// 文件类型
+    char d_name[];	//文件名
 };
 
+
 #endif
diff --git a/kern/boot/main.c b/kern/boot/main.c
index 9081bd101386fc922bf748071a1623c8deab30dc..462cb8afcf5ce66dbd8d2f213dc8e9391dbe3fec 100644
--- a/kern/boot/main.c
+++ b/kern/boot/main.c
@@ -48,7 +48,7 @@ void main() {
 			isStarted[i] = 0;
 		}
 		isStarted[cpuid()] = 1; // 标记自己已启动
-
+		printf("OFF=%d\n", (u64)(&(((struct DirentUser*)0)->d_name)));
 		// consoleinit();
 		printInit();
 		printf("FarmOS kernel is booting (on hart %d)\n", cpuid());
diff --git a/kern/fs/fat32.c b/kern/fs/fat32.c
index 2bac517fbb92b4d2ab360604c9c7989b377b0b8c..ca84163f58d373eac94e58fa15dd985ba994f86b 100644
--- a/kern/fs/fat32.c
+++ b/kern/fs/fat32.c
@@ -526,12 +526,38 @@ int fileWrite(struct Dirent *file, int user, u64 src, uint off, uint n) {
 	return n;
 }
 
+
+// // GetDents 工具函数
+// static void appendDent(u64 d_ino, i64 d_off, u16 d_reclen, u8 d_type, char *d_name, struct DirentUser **last, struct DirentUser **next) {
+// 	return;
+// 	// 维护前指针:修改上一个 DirentUser 的 d_off
+// 	if (*last != NULL) {
+// 		(*last)->d_off = d_off;
+// 	}
+// 	// 移动前指针:修改上一个 DirentUser 为当前 DirentUser
+// 	*last = *next;
+// 	// 维护当前指针:赋值当前 DirentUser
+// 	(*next)->d_ino = d_ino;
+// 	(*next)->d_off = 0;
+// 	(*next)->d_reclen = d_reclen;
+// 	(*next)->d_type = d_type;
+// 	const int off = (int)(&(((struct DirentUser*)0)->d_name));
+// 	strncpy((*next)->d_name, d_name, d_reclen - off);
+// 	// 移动当前指针:修改下一个 DirentUser 的位置
+// 	*next = (struct DirentUser *)((u8 *)*next + d_reclen);
+// }
+
+
 /**
  * @brief 获取目录的条目
  * @return 成功执行,返回读取的字节数,失败返回-1
  */
 int getDents(struct Dirent *dir, struct DirentUser *buf, int len) {
-	panic("unimplemented");
+	// u8 *last = NULL;
+	// u8 *next = (u8 *)buf;// 下一个 DirentUser 的位置
+	
+
+
 	return 0;
 }
 
diff --git a/user/test_argv.c b/user/test_argv.c
index 240982fdb26fedb955d0530ac4a4d8daff5a87d6..847bcdffee2500ed8ff014ad1cb3dad6213579f5 100644
--- a/user/test_argv.c
+++ b/user/test_argv.c
@@ -1,7 +1,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main(int argc, char *argv[]) {
diff --git a/user/test_clone.c b/user/test_clone.c
index 976dbbb02f65d9cff8977712803467d7b802f56f..b32c85a652118b782ac11a7d36a3283a32b2fb79 100644
--- a/user/test_clone.c
+++ b/user/test_clone.c
@@ -2,7 +2,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 __attribute__((aligned(4096))) char stack[4096];
diff --git a/user/test_execve.c b/user/test_execve.c
index 2c5b6562b320d065539785b133785654f9d8681b..26f3b7ca31e7570da01b2c79f933899e66c3199c 100644
--- a/user/test_execve.c
+++ b/user/test_execve.c
@@ -1,7 +1,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main() {
diff --git a/user/test_exit.c b/user/test_exit.c
index de753f10762a8e58e29fad08494c8c8d4dc35ba8..d6ca5b6f0382688048b40cb565d638399747003f 100644
--- a/user/test_exit.c
+++ b/user/test_exit.c
@@ -1,7 +1,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main() {
diff --git a/user/test_init.c b/user/test_init.c
index c864082bf9889ca0c53ae6372474a248c0ab0cbe..f5798526a030c0d36044cb287919389954bc004b 100644
--- a/user/test_init.c
+++ b/user/test_init.c
@@ -2,7 +2,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main() {
diff --git a/user/test_sleep.c b/user/test_sleep.c
index 6f807d578d3f717e2cd0668a5f53fbf7256f8fc5..56cc147775b4366703483928a738d9d09abdf4d1 100644
--- a/user/test_sleep.c
+++ b/user/test_sleep.c
@@ -2,7 +2,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main() {
diff --git a/user/test_while.c b/user/test_while.c
index d92f4356412bb93bfc4da865de474f6c3ddb633f..8f45cd2af398aa360b688e08627ad9761becf260 100644
--- a/user/test_while.c
+++ b/user/test_while.c
@@ -1,7 +1,6 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <syscall.h>
-#include <trap/syscallDataStruct.h>
 #include <unistd.h>
 
 int main() {