Linux内核的ksys_mkdir和sys_mkdir的区别
时间: 2023-05-29 19:01:08 浏览: 75
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和ksys_mkdir的区别
init_mkdir是内核初始化过程中调用的函数,它用于创建根文件系统中的基本目录结构,如/bin、/dev、/etc等目录。而ksys_mkdir是系统调用mkdir的具体实现,它是用户空间程序调用mkdir函数后最终会调用的函数,用于在指定的路径下创建一个新目录。它们的作用和用途不同,只是都涉及到创建目录的操作。
列举和Linux内核的ksys_mkdir有相同作用的api
1. mkdir函数:int mkdir(const char *pathname, mode_t mode);
2. mkdirat函数:int mkdirat(int dirfd, const char *pathname, mode_t mode);
3. sys_mkdir函数:long sys_mkdir(const char *pathname, umode_t mode);
4. mkdir_p函数:int mkdir_p(const char *path, mode_t mode);
5. make_directory函数:int make_directory(const char *dir, mode_t mode, bool allow_existing);
6. do_mkdir函数:int do_mkdir(const char *path, umode_t mode);
7. vfat_mkdir函数:int vfat_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
8. ext4_mkdir函数:int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
9. smbfs_mkdir函数:int smbfs_mkdir(struct inode *inode, struct dentry *dentry, umode_t mode);