linux内核的init_mkdir和ksys_mkdir的区别
时间: 2023-05-29 21:01:16 浏览: 125
init_mkdir是内核初始化过程中调用的函数,它用于创建根文件系统中的基本目录结构,如/bin、/dev、/etc等目录。而ksys_mkdir是系统调用mkdir的具体实现,它是用户空间程序调用mkdir函数后最终会调用的函数,用于在指定的路径下创建一个新目录。它们的作用和用途不同,只是都涉及到创建目录的操作。
相关问题
Linux内核的ksys_mkdir和sys_mkdir的区别
ksys_mkdir和sys_mkdir都是Linux内核中用于创建目录的系统调用函数。它们的主要区别在于:
1. ksys_mkdir是内核级别的系统调用函数,而sys_mkdir是用户级别的系统调用函数。ksys_mkdir直接调用内核代码来创建目录,而sys_mkdir则通过系统调用机制将请求发送给内核。
2. ksys_mkdir不会检查用户名和权限,可以在内核模式下执行,而sys_mkdir会检查用户名和权限,必须在用户模式下执行。
3. ksys_mkdir函数可以被其他内核函数调用,而sys_mkdir只能被用户空间应用程序调用。
因此,如果在内核模式下需要创建目录,应该使用ksys_mkdir函数,而在用户空间下需要创建目录,应该使用sys_mkdir函数。
Linux内核的init_mkdir函数
init_mkdir函数是Linux内核中的一个函数,用于初始化根目录的创建。该函数的定义如下:
```c
static int __init init_mkdir(void)
{
int error;
if (!root_inode)
return -EINVAL;
error = vfs_mkdir(root_inode, 0755);
if (error) {
printk(KERN_ERR "Failed to create root directory: %d\n", error);
return error;
}
return 0;
}
```
首先,该函数会检查是否已经有根目录的inode节点。如果没有,则返回EINVAL错误。
然后,该函数使用vfs_mkdir函数在根目录中创建一个名为“root”的目录,并给出0755权限。
最后,该函数会返回0,表示根目录初始化成功。
总之,init_mkdir函数是Linux内核中用于初始化根目录的函数。