创建系统调用函数

Create system call function

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

asmlinkage long sys_get_child_folder(char* path, char** child_folder);

I'm smelling a XY problem;您要解决的实际问题是什么?

你到底为什么要为此创建一个新的系统调用?只需打开目录,枚举其所有条目并过滤掉那些不是目录 inode 的条目。执行此操作的规范方法是使用 opendir 函数。 https://linux.die.net/man/3/opendir


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