asmlinkage long new_mkdir(const char __user *pathname,int mode) { /*创建一个nameidata结构体*/ struct nameidata nd; /*nd这里赋值完后里面就含有全路径的信息了*/ int ret = path_lookup(pathname,LOOKUP_DIRECTORY,&nd); /*打印出的是所创建的文件夹的名称,比如mydir*/ printk("%s /n",nd.path.dentry->d_name.name); /*关键步骤,d_parent同样是一个dentry结构,指向父目录,如果全路径是/home/my/mydir/,那么这时候输出的就是my*/ printk("%s /n",nd.path.dentry->d_parent->d_name.name); /*以此类推,一直往上推到根目录"/" */ printk("%s /n",nd.path.dentry->d_parent->d_parent->d_name.name); return old_mkdir(pathname,mode); }