Linux kernel 创建系统调用函数

Linux kernel 创建系统调用函数,linux-kernel,system-calls,Linux Kernel,System Calls,我需要创建一个系统调用函数来获取目录的所有子文件夹。但是,我不知道该怎么做。你能给我一些关键字或建议来实现吗 asmlong sys\u get\u child\u文件夹(char*path,char**child\u文件夹);你想解决的实际问题是什么 你到底为什么要为它创建一个新的系统调用?只需打开目录,枚举它的所有条目并过滤掉那些不是目录索引节点的条目。实现这一点的标准方法是使用opendir函数 还请记住,如果您正在编写本应在内核内运行的代码,请注意,从内核内部很难访问通常的文件系统机制

我需要创建一个系统调用函数来获取目录的所有子文件夹。但是,我不知道该怎么做。你能给我一些关键字或建议来实现吗

asmlong sys\u get\u child\u文件夹(char*path,char**child\u文件夹)

;你想解决的实际问题是什么

你到底为什么要为它创建一个新的系统调用?只需打开目录,枚举它的所有条目并过滤掉那些不是目录索引节点的条目。实现这一点的标准方法是使用
opendir
函数



还请记住,如果您正在编写本应在内核内运行的代码,请注意,从内核内部很难访问通常的文件系统机制。原因是,文件系统产生名称空间,这取决于任务上下文;从内核中访问文件的唯一可靠方法是让用户空间进程打开它们,然后将文件描述符交给一些内核代码。但这是非常不鼓励的。

我试着让一个系统调用函数像。@ThánhTrầ护士:是的,你告诉我们的。问题是为什么要进行系统调用?为什么不使用用户空间中现成的功能?您试图解决的问题是什么,迫使您在内核空间中执行此操作?这是我老师提出的额外问题。@ThánhTrần:在我看来,这是你老师提出的一个非常糟糕的额外问题:首先,它表明你的老师不理解文件系统访问需要了解所谓的“任务结构”以及它如何创建装载名称空间。此外,它还指出了一个问题,对于这个问题,在大范围内已经存在一个适当的解决方案,因此学生很有可能只是执行无意识的复制和粘贴。无论如何,Linux已经提供了一个读目录系统调用的特定实现:@ThánhTrần:基本上,你的老师提出的问题要求你在Linux内核中实现所有已经实现的
readdir.c
,再加上Linux VFS中的一些其他东西。堆栈溢出是一个不好的地方,不适合从哪里开始这类问题。你任务的哪一部分对你来说是有问题的?如果您想知道如何在Linux内核中迭代文件,请参阅以下问题: