您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ vfs_mknod函数代码示例

51自学网 2021-06-03 09:38:44
  C++
这篇教程C++ vfs_mknod函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中vfs_mknod函数的典型用法代码示例。如果您正苦于以下问题:C++ vfs_mknod函数的具体用法?C++ vfs_mknod怎么用?C++ vfs_mknod使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了vfs_mknod函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: handle_create

static int handle_create(const char *nodename, umode_t mode, kuid_t uid,			 kgid_t gid, struct device *dev){	struct dentry *dentry;	struct path path;	int err;	dentry = kern_path_create(AT_FDCWD, nodename, &path, 0);	if (dentry == ERR_PTR(-ENOENT)) {		create_path(nodename);		dentry = kern_path_create(AT_FDCWD, nodename, &path, 0);	}	if (IS_ERR(dentry))		return PTR_ERR(dentry);	err = vfs_mknod(d_inode(path.dentry), dentry, mode, dev->devt, &path);	if (!err) {		struct iattr newattrs;		newattrs.ia_mode = mode;		newattrs.ia_uid = uid;		newattrs.ia_gid = gid;		newattrs.ia_valid = ATTR_MODE|ATTR_UID|ATTR_GID;		mutex_lock(&d_inode(dentry)->i_mutex);		notify_change(dentry, &newattrs, NULL);		mutex_unlock(&d_inode(dentry)->i_mutex);		/* mark as kernel-created inode */		d_inode(dentry)->i_private = &thread;	}	done_path_create(&path, dentry);	return err;}
开发者ID:kbukin1,项目名称:pnotify-linux-4.1.6,代码行数:33,


示例2: wrapfs_mknod

static int wrapfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,			dev_t dev){	int err;	struct dentry *lower_dentry;	struct dentry *lower_parent_dentry = NULL;	struct path lower_path;	wrapfs_get_lower_path(dentry, &lower_path);	lower_dentry = lower_path.dentry;	lower_parent_dentry = lock_parent(lower_dentry);	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (err)		goto out;	err = wrapfs_interpose(dentry, dir->i_sb, &lower_path);	if (err)		goto out;	fsstack_copy_attr_times(dir, wrapfs_lower_inode(dir));	fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);out:	unlock_dir(lower_parent_dentry);	wrapfs_put_lower_path(dentry, &lower_path);#ifdef NEKTECH_LOGGER /*NEKTECH LOGGING*/            nektech_logger (dir, dentry, NEKTECH_MKNOD);#endif          /*NEKTECH LOGGING*/		return err;}
开发者ID:AkyZero,项目名称:wrapfs-nektech,代码行数:31,


示例3: amfs_mknod

static int amfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,			dev_t dev){	int err;	struct dentry *lower_dentry;	struct dentry *lower_parent_dentry = NULL;	struct path lower_path;	amfs_get_lower_path(dentry, &lower_path);	lower_dentry = lower_path.dentry;	lower_parent_dentry = lock_parent(lower_dentry);	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (err)		goto out;	err = amfs_interpose(dentry, dir->i_sb, &lower_path);	if (err)		goto out;	fsstack_copy_attr_times(dir, amfs_lower_inode(dir));	fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);out:	unlock_dir(lower_parent_dentry);	amfs_put_lower_path(dentry, &lower_path);	return err;}
开发者ID:namanM003,项目名称:Operating-Systems-CSE-506-,代码行数:27,


示例4: wrapfs_mknod

static int wrapfs_mknod(struct inode *dir, struct dentry *dentry, int mode,			dev_t dev){	int err = 0;	struct dentry *lower_dentry;	struct dentry *lower_parent_dentry = NULL;	struct path lower_path;	wrapfs_get_lower_path(dentry, &lower_path);	lower_dentry = lower_path.dentry;	lower_parent_dentry = lock_parent(lower_dentry);	err = mnt_want_write(lower_path.mnt);	if (err)		goto out_unlock;	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (err)		goto out;	err = wrapfs_interpose(dentry, dir->i_sb, &lower_path);	if (err)		goto out;	fsstack_copy_attr_times(dir, wrapfs_lower_inode(dir));	fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);out:	mnt_drop_write(lower_path.mnt);out_unlock:	unlock_dir(lower_parent_dentry);	wrapfs_put_lower_path(dentry, &lower_path);	return err;}
开发者ID:abhishekShukla,项目名称:Linux-Stackable-File-System-,代码行数:32,


示例5: bpf_obj_do_pin

static int bpf_obj_do_pin(const struct filename *pathname, void *raw,			  enum bpf_type type){	struct dentry *dentry;	struct inode *dir;	struct path path;	umode_t mode;	dev_t devt;	int ret;	dentry = kern_path_create(AT_FDCWD, pathname->name, &path, 0);	if (IS_ERR(dentry))		return PTR_ERR(dentry);	mode = S_IFREG | ((S_IRUSR | S_IWUSR) & ~current_umask());	devt = MKDEV(UNNAMED_MAJOR, type);	ret = security_path_mknod(&path, dentry, mode, devt);	if (ret)		goto out;	dir = d_inode(path.dentry);	if (dir->i_op != &bpf_dir_iops) {		ret = -EPERM;		goto out;	}	dentry->d_fsdata = raw;	ret = vfs_mknod(dir, dentry, mode, devt);	dentry->d_fsdata = NULL;out:	done_path_create(&path, dentry);	return ret;}
开发者ID:AK101111,项目名称:linux,代码行数:34,


示例6: do_mknod

int	do_mknod (struct inode *inode, const char *name, int len, int mode,	          int dev){#if USE_DENTRY_F	struct dentry	*tmp_dent;#endif	int		ret_code;	DOWN(&(inode->i_sem));#if USE_DENTRY_F		/* Create a temporary negative dentry for the target. */	ret_code = ovlfs_inode_get_child_dentry(inode, name, len, &tmp_dent,	                                        OVLFS_DENT_GET_NEGATIVE);	if ( ret_code == 0 )	{			/* Use the vfs_mknod function to do the dirty work. */		ret_code = vfs_mknod(inode, tmp_dent, mode, dev);		dput(tmp_dent);	}#else	IMARK(inode);	ret_code = inode->i_op->mknod(inode, name, len, data->mode, data->dev);#endif	UP(&(inode->i_sem));	return	ret_code;}
开发者ID:raven-au,项目名称:ovlfs,代码行数:33,


示例7: device_register

/** * Adds device entry to the device list and creates file system entry * @TODO: Use linked list for devices as well */int device_register (device_t *dev, const char *filename) {  device_t *tmp = ll_devices;//  kprintf ("device_register (device_t *dev, const char *%s) {/n", filename);  // There are no devices yet, this is the first device. Special case  if (ll_devices == NULL) {    ll_devices = dev;    dev->next = NULL;  } else {    // See if device already exists    while (tmp) {      if (tmp->major_num == dev->major_num && tmp->minor_num == dev->minor_num) return 0;      tmp = (device_t *)tmp->next;    }    // Send end of device list    tmp = ll_devices;    while (tmp->next) tmp = (device_t *)tmp->next;    // Add device to end    tmp->next = (struct device_t *)dev;    dev->next = NULL;  }  // Create device node  vfs_node_t node;  vfs_get_node_from_path ("DEVICE:/", &node);  vfs_mknod (&node, filename, FS_BLOCKDEVICE, dev->major_num, dev->minor_num);  return 1;}
开发者ID:catufunwa,项目名称:CybOS,代码行数:37,


示例8: handle_create

static int handle_create(const char *nodename, umode_t mode, struct device *dev){    struct dentry *dentry;    struct path path;    int err;    dentry = kern_path_create(AT_FDCWD, nodename, &path, 0);    if (dentry == ERR_PTR(-ENOENT)) {        create_path(nodename);        dentry = kern_path_create(AT_FDCWD, nodename, &path, 0);    }    if (IS_ERR(dentry))        return PTR_ERR(dentry);    err = vfs_mknod(path.dentry->d_inode,                    dentry, mode, dev->devt);    if (!err) {        struct iattr newattrs;        /* fixup possibly umasked mode */        newattrs.ia_mode = mode;        newattrs.ia_valid = ATTR_MODE;        mutex_lock(&dentry->d_inode->i_mutex);        notify_change(dentry, &newattrs);        mutex_unlock(&dentry->d_inode->i_mutex);        /* mark as kernel-created inode */        dentry->d_inode->i_private = &thread;    }    done_path_create(&path, dentry);    return err;}
开发者ID:twobrokenshoes,项目名称:linux-3.8,代码行数:32,


示例9: vfsub_mknod

int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev){	int err;	struct dentry *d;	IMustLock(dir);	d = path->dentry;	path->dentry = d->d_parent;	err = security_path_mknod(path, d, mode, new_encode_dev(dev));	path->dentry = d;	if (unlikely(err))		goto out;	err = vfs_mknod(dir, path->dentry, mode, dev);	if (!err) {		struct path tmp = *path;		int did;		vfsub_update_h_iattr(&tmp, &did);		if (did) {			tmp.dentry = path->dentry->d_parent;			vfsub_update_h_iattr(&tmp, /*did*/NULL);		}		/*ignore*/	}out:	return err;}
开发者ID:aywq2008,项目名称:omniplay,代码行数:30,


示例10: op_write

void op_write(const char **params, int nparams) {  assert(nparams > 1);  inode_t *ino = vfs_open(params[0], &dummy_access);  if (!ino) {    /* Find parent. */    char *str = NULL;    int i;    for (i = strlen(params[0]); i >= 0; --i) {      if (params[0][i] == '/') {        str = kmalloc(i+1);        strncpy(str, params[0], i);        str[i] = '/0';        break;      }    }    assert(str && "Parent directory not found!");    ino = vfs_open(str, &dummy_access);    assert(ino && "Parent directory not found!");    vfs_mknod(ino, &params[0][i+1], it_file, 0755, 0, 0);    vfs_close(ino);    ino = vfs_open(params[0], &dummy_access);    assert(ino && "File not found after having created it!");  }  assert(ino && "File not found!");  assert(ino->type == it_file && "File is not a regular file!");  vfs_write(ino, 0, (void*)params[1], strlen(params[1]));  vfs_close(ino);}
开发者ID:RobinVan,项目名称:JMTK,代码行数:34,


示例11: sdcardfs_mknod

static int sdcardfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,			dev_t dev){	int err = 0;	struct dentry *lower_dentry;	struct dentry *lower_parent_dentry = NULL;	struct path lower_path;	OVERRIDE_CRED(SDCARDFS_SB(dir->i_sb));	sdcardfs_get_lower_path(dentry, &lower_path);	lower_dentry = lower_path.dentry;	lower_parent_dentry = lock_parent(lower_dentry);	err = mnt_want_write(lower_path.mnt);	if (err)		goto out_unlock;	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (err)		goto out;	err = sdcardfs_interpose(dentry, dir->i_sb, &lower_path);	if (err)		goto out;	fsstack_copy_attr_times(dir, sdcardfs_lower_inode(dir));	fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);out:	mnt_drop_write(lower_path.mnt);out_unlock:	unlock_dir(lower_parent_dentry);	sdcardfs_put_lower_path(dentry, &lower_path);	REVERT_CRED();	return err;}
开发者ID:munjeni,项目名称:ntfs_android,代码行数:35,


示例12: ccfs_mknod

static int ccfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev){	int rc;	struct dentry *lower_dentry;	struct dentry *lower_dir_dentry;			lower_dentry = ccfs_get_nested_dentry(dentry);	lower_dir_dentry = lock_parent(lower_dentry);		mdbg(INFO3,"MKNOD w/ lower_dentry->d_name.name = [%s]", lower_dentry->d_name.name);		rc = vfs_mknod(lower_dir_dentry->d_inode, lower_dentry, mode, dev);	if (rc || !lower_dentry->d_inode)		goto out;	rc = ccfs_interpose(lower_dentry, dentry, dir->i_sb, 0);	if (rc)		goto out;	fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode);	fsstack_copy_inode_size(dir, lower_dir_dentry->d_inode);out:	unlock_dir(lower_dir_dentry);	if (!dentry->d_inode)		d_drop(dentry);	return rc;}
开发者ID:FIT-CVUT,项目名称:clondike,代码行数:25,


示例13: op_mkdir

void op_mkdir(const char **params, int nparams) {  inode_t *ino = vfs_open(params[0], &dummy_access);  assert(!ino && "Directory exists!");      /* Find parent. */  char *str = NULL;  int i;  for (i = strlen(params[0]); i >= 0; --i) {    if (params[0][i] == '/') {      str = kmalloc(i+1);      strncpy(str, params[0], i);      str[i] = '/0';      break;    }  }  assert(str && "Parent directory not found!");  ino = vfs_open(str, &dummy_access);  assert(ino && "Parent directory not found!");  vfs_mknod(ino, &params[0][i+1], it_dir, 0777, 0, 0);  ino = vfs_open(params[0], &dummy_access);  assert(ino && "Directory not found after having created it!");    vfs_close(ino);}
开发者ID:RobinVan,项目名称:JMTK,代码行数:28,


示例14: __u2fs_mknod

void __u2fs_mknod(struct work_struct *work){	struct sioq_args *args = container_of(work, struct sioq_args, work);	struct mknod_args *m = &args->mknod;	args->err = vfs_mknod(m->parent, m->dentry, m->mode, m->dev);	complete(&args->comp);}
开发者ID:abhishekgupta8,项目名称:fan-out-unification-file-system-u2fs,代码行数:8,


示例15: u2fs_mknod

static int u2fs_mknod(struct inode *dir, struct dentry *dentry, int mode,			dev_t dev){	int err = 0;	struct dentry *lower_dentry;	struct dentry *lower_parent_dentry = NULL;	struct path lower_path;	struct dentry *ret = NULL;	/* creating parent directories if destination is read-only */	if((U2FS_D(dentry)->lower_path[LEFT].dentry) == NULL && 		(U2FS_D(dentry)->lower_path[LEFT].mnt) == NULL){		ret = create_parents(dir, dentry, dentry->d_name.name);		if (!ret || IS_ERR(ret)) {				err = PTR_ERR(ret);				if (!IS_COPYUP_ERR(err))					printk(KERN_ERR				      	 "u2fs: create_parents for "			     		  "u2fs_mknod failed"				      	 "err=%d/n", err);				goto out_copyup;		}		u2fs_postcopyup_setmnt(dentry);		u2fs_put_reset_lower_path(dentry, RIGHT);	}	u2fs_get_lower_path(dentry, &lower_path, LEFT);	lower_dentry = lower_path.dentry;	lower_parent_dentry = lock_parent(lower_dentry);	err = mnt_want_write(lower_path.mnt);	if (err)		goto out_unlock;	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (err)		goto out;	err = u2fs_interpose(dentry, dir->i_sb, &lower_path, LEFT);	if (err)		goto out;	fsstack_copy_attr_times(dir, u2fs_lower_inode(dir, LEFT));	fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);out:	mnt_drop_write(lower_path.mnt);out_unlock:	unlock_dir(lower_parent_dentry);	u2fs_put_lower_path(dentry, &lower_path);out_copyup:	return err;}
开发者ID:abhishekgupta8,项目名称:fan-out-unification-file-system-u2fs,代码行数:53,


示例16: do_vfsub_mknod

int do_vfsub_mknod(struct inode *dir, struct dentry *dentry, int mode,		   dev_t dev){	int err;	LKTRTrace("i%lu, %.*s, 0x%x/n", dir->i_ino, AuDLNPair(dentry), mode);	IMustLock(dir);	err = vfs_mknod(dir, dentry, mode, dev);	if (!err) {		/* dir inode is locked */		au_update_fuse_h_inode(NULL, dentry->d_parent); /*ignore*/		au_update_fuse_h_inode(NULL, dentry); /*ignore*/	}	return err;}
开发者ID:wosigh,项目名称:patches,代码行数:16,


示例17: create_fs_node

//====================================================================// Create a node for this device under the given path using the given// device number. Returns 0 on success and non-zero on failure.static int create_fs_node(const char *dev_path, dev_t undelete_minor_devnode) {    struct dentry *dentry;    struct path path;    int lookup_flags = 0;    umode_t mode = S_IRUGO | S_IFCHR;    int err;    dentry = kern_path_create(AT_FDCWD, dev_path, &path, lookup_flags);    if (IS_ERR(dentry)) {        return PTR_ERR(dentry);    }    err = security_path_mknod(&path, dentry, mode, undelete_minor_devnode);    if (!err) {        err = vfs_mknod(path.dentry->d_inode, dentry,                        mode, undelete_minor_devnode);    }    done_path_create(&path, dentry);    return err;}
开发者ID:Bredgren,项目名称:CSE451,代码行数:22,


示例18: ecryptfs_mknod

static intecryptfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev){	int rc;	struct dentry *lower_dentry;	struct dentry *lower_dir_dentry;	lower_dentry = ecryptfs_dentry_to_lower(dentry);	lower_dir_dentry = lock_parent(lower_dentry);	rc = vfs_mknod(d_inode(lower_dir_dentry), lower_dentry, mode, dev);	if (rc || d_really_is_negative(lower_dentry))		goto out;	rc = ecryptfs_interpose(lower_dentry, dentry, dir->i_sb);	if (rc)		goto out;	fsstack_copy_attr_times(dir, d_inode(lower_dir_dentry));	fsstack_copy_inode_size(dir, d_inode(lower_dir_dentry));out:	unlock_dir(lower_dir_dentry);	if (d_really_is_negative(dentry))		d_drop(dentry);	return rc;}
开发者ID:acton393,项目名称:linux,代码行数:23,


示例19: hwgfs_register

hwgfs_handle_thwgfs_register(	hwgfs_handle_t		dir,	const char		*name,	unsigned int		flags,	unsigned int		major,	unsigned int		minor,	umode_t			mode,	void			*ops,	void			*info){	dev_t			devnum = MKDEV(major, minor);	struct inode		*parent_inode;	struct dentry		*dentry;	int			error;	error = hwgfs_decode(dir, name, 0, &parent_inode, &dentry);	if (likely(!error)) {		error = vfs_mknod(parent_inode, dentry, mode, devnum);		if (likely(!error)) {			/*			 * Do this inside parents i_sem to avoid racing			 * with lookups.			 */			if (S_ISCHR(mode))				dentry->d_inode->i_fop = ops;			dentry->d_fsdata = info;			up(&parent_inode->i_sem);		} else {			up(&parent_inode->i_sem);			dput(dentry);			dentry = NULL;                }	}	return dentry;}
开发者ID:NandanPhadke,项目名称:oslab,代码行数:37,


示例20: devtmpfs_create_node

int devtmpfs_create_node(struct device *dev){	const char *tmp = NULL;	const char *nodename;	const struct cred *curr_cred;	mode_t mode = 0;	struct nameidata nd;	struct dentry *dentry;	int err;	if (!dev_mnt)		return 0;	nodename = device_get_devnode(dev, &mode, &tmp);	if (!nodename)		return -ENOMEM;	if (mode == 0)		mode = 0600;	if (is_blockdev(dev))		mode |= S_IFBLK;	else		mode |= S_IFCHR;	curr_cred = override_creds(&init_cred);	err = vfs_path_lookup(dev_mnt->mnt_root, dev_mnt,			      nodename, LOOKUP_PARENT, &nd);	if (err == -ENOENT) {		create_path(nodename);		err = vfs_path_lookup(dev_mnt->mnt_root, dev_mnt,				      nodename, LOOKUP_PARENT, &nd);	}	if (err)		goto out;	dentry = lookup_create(&nd, 0);	if (!IS_ERR(dentry)) {		err = vfs_mknod(nd.path.dentry->d_inode,				dentry, mode, dev->devt);		if (!err) {			struct iattr newattrs;			/* fixup possibly umasked mode */			newattrs.ia_mode = mode;			newattrs.ia_valid = ATTR_MODE;			mutex_lock(&dentry->d_inode->i_mutex);			notify_change(dentry, &newattrs);			mutex_unlock(&dentry->d_inode->i_mutex);			/* mark as kernel-created inode */			dentry->d_inode->i_private = &dev_mnt;		}		dput(dentry);	} else {		err = PTR_ERR(dentry);	}	mutex_unlock(&nd.path.dentry->d_inode->i_mutex);	path_put(&nd.path);out:	kfree(tmp);	revert_creds(curr_cred);	return err;}
开发者ID:jhu-chang,项目名称:r6300v2,代码行数:65,


示例21: create_sto_nod

int create_sto_nod(dentry_t *dentry, int mode, int dev)#endif{	int err = 0;	inode_t *dir;	dentry_t *hidden_sto_dentry;	dentry_t *hidden_sto_dir_dentry;	if(exists_in_storage(dentry)) {		err = -EEXIST;		goto out;	}	err = get_neg_sto_dentry(dentry);	if (err) {                printk(KERN_CRIT "mini_fo: create_sto_nod: ERROR getting neg. sto dentry./n");                goto out;        }	dir = dentry->d_parent->d_inode;	hidden_sto_dentry = dtohd2(dentry);	/* lock parent */	hidden_sto_dir_dentry = dget(hidden_sto_dentry->d_parent);	err = PTR_ERR(hidden_sto_dir_dentry);	if (IS_ERR(hidden_sto_dir_dentry))		goto out;	err = vfs_mknod(hidden_sto_dir_dentry->d_inode, hidden_sto_dentry, mode, dev);	if(err)		goto out_lock;	if(!dtohd2(dentry)->d_inode) {		printk(KERN_CRIT "mini_fo: create_sto_nod: creating storage inode failed [1]./n");		err = -EINVAL; /* return something indicating failure */		goto out_lock;	}	/* interpose the new inode */	if(dtost(dentry) == DELETED) {		dtost(dentry) = DEL_REWRITTEN;		err = mini_fo_tri_interpose(NULL, hidden_sto_dentry, dentry, dir->i_sb, 0);		if(err)			goto out_lock;	}	else if(dtost(dentry) == NON_EXISTANT) {		dtost(dentry) = CREATED;		err = mini_fo_tri_interpose(dtohd(dentry), hidden_sto_dentry, dentry, dir->i_sb, 0);		if(err)			goto out_lock;	}	else if(dtost(dentry) == UNMODIFIED) {		dtost(dentry) = MODIFIED;		/* interpose on new inode */		if(itohi2(dentry->d_inode) != NULL) {			printk(KERN_CRIT "mini_fo: create_sto_nod: error, invalid inode detected./n");			err = -EINVAL;			goto out_lock;		}		itohi2(dentry->d_inode) = igrab(dtohd2(dentry)->d_inode);	}	fist_copy_attr_timesizes(dir, hidden_sto_dir_dentry->d_inode); out_lock:	dput(hidden_sto_dir_dentry); out:	return err;}
开发者ID:patrick-ken,项目名称:MyNet_N900,代码行数:70,


示例22: SYSCALL_HANDLER3

SYSCALL_HANDLER3(sys_mknod, const char *path, mode_t mode, dev_t *dev) {	*dev = vfs_mknod(path, mode, *dev);}
开发者ID:TacOS-team,项目名称:tacos,代码行数:3,


示例23: copyup_named_dentry

//.........这里部分代码省略.........		}		oldfs = get_fs();		set_fs(KERNEL_DS);		err =		    old_hidden_dentry->d_inode->i_op->		    readlink(old_hidden_dentry, symbuf, PATH_MAX);		set_fs(oldfs);		if (err < 0)			goto copyup_readlink_err;		symbuf[err] = '/0';	}	/* Now we lock the parent, and create the object in the new branch. */	new_hidden_parent_dentry = lock_parent(new_hidden_dentry);	current->fsuid = new_hidden_parent_dentry->d_inode->i_uid;	current->fsgid = new_hidden_parent_dentry->d_inode->i_gid;	if (S_ISDIR(old_hidden_dentry->d_inode->i_mode)) {		err = vfs_mkdir(new_hidden_parent_dentry->d_inode,				new_hidden_dentry, S_IRWXU);	} else if (S_ISLNK(old_hidden_dentry->d_inode->i_mode)) {#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)		err = vfs_symlink(new_hidden_parent_dentry->d_inode,				  new_hidden_dentry, symbuf);#else		err = vfs_symlink(new_hidden_parent_dentry->d_inode,				  new_hidden_dentry, symbuf, S_IRWXU);#endif	} else if (S_ISBLK(old_hidden_dentry->d_inode->i_mode)		   || S_ISCHR(old_hidden_dentry->d_inode->i_mode)		   || S_ISFIFO(old_hidden_dentry->d_inode->i_mode)		   || S_ISSOCK(old_hidden_dentry->d_inode->i_mode)) {#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)		err = vfs_mknod(new_hidden_parent_dentry->d_inode,				new_hidden_dentry,				old_hidden_dentry->d_inode->i_mode,				kdev_t_to_nr(old_hidden_dentry->d_inode->					     i_rdev));#else		err = vfs_mknod(new_hidden_parent_dentry->d_inode,				new_hidden_dentry,				old_hidden_dentry->d_inode->i_mode,				old_hidden_dentry->d_inode->i_rdev);#endif	} else if (S_ISREG(old_hidden_dentry->d_inode->i_mode)) {#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)		err = vfs_create(new_hidden_parent_dentry->d_inode,				 new_hidden_dentry, S_IRWXU);#else		err = vfs_create(new_hidden_parent_dentry->d_inode,				 new_hidden_dentry, S_IRWXU, NULL);#endif	} else {		char diemsg[100];		snprintf(diemsg, sizeof(diemsg), "Unknown inode type %d/n",			 old_hidden_dentry->d_inode->i_mode);		FISTBUG(diemsg);	}	current->fsuid = saved_uid;	current->fsgid = saved_gid;	unlock_dir(new_hidden_parent_dentry);      copyup_readlink_err:	KFREE(symbuf);	if (err) {		/* get rid of the hidden dentry and all its traces */		DPUT(new_hidden_dentry);
开发者ID:rickgaiser,项目名称:kernelloader,代码行数:67,


示例24: devtmpfs_create_node

int devtmpfs_create_node(struct device *dev){	const char *tmp = NULL;	const char *nodename;	const struct cred *curr_cred;	struct user_beancounter *curr_ub;	mode_t mode = 0;	struct nameidata nd;	struct dentry *dentry;	int err;	struct vfsmount *dev_mnt = ve_devmnt();	if (!dev_mnt)		return 0;	nodename = device_get_devnode(dev, &mode, &tmp);	if (!nodename)		return -ENOMEM;	if (mode == 0)		mode = 0600;	if (is_blockdev(dev))		mode |= S_IFBLK;	else		mode |= S_IFCHR;	curr_ub = set_exec_ub(&ub0);	curr_cred = override_creds(&init_cred);	err = vfs_path_lookup(dev_mnt->mnt_root, dev_mnt,			      nodename, LOOKUP_PARENT, &nd);	if (err == -ENOENT) {		/* create missing parent directories */		create_path(nodename);		err = vfs_path_lookup(dev_mnt->mnt_root, dev_mnt,				      nodename, LOOKUP_PARENT, &nd);		if (err)			goto out;	}	dentry = lookup_create(&nd, 0);	if (!IS_ERR(dentry)) {		int umask;		umask = sys_umask(0000);		err = vfs_mknod(nd.path.dentry->d_inode,				dentry, mode, dev->devt);		sys_umask(umask);		/* mark as kernel created inode */		if (!err)			dentry->d_inode->i_private = &dev_mnt;		dput(dentry);	} else {		err = PTR_ERR(dentry);	}	mutex_unlock(&nd.path.dentry->d_inode->i_mutex);	path_put(&nd.path);out:	kfree(tmp);	revert_creds(curr_cred);	(void)set_exec_ub(curr_ub);	return err;}
开发者ID:katuma,项目名称:openvz-kernel,代码行数:63,


示例25: unionfs_mknod

static int unionfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,			 dev_t dev){	int err = 0;	struct dentry *lower_dentry = NULL;	struct dentry *wh_dentry = NULL;	struct dentry *lower_parent_dentry = NULL;	struct dentry *parent;	char *name = NULL;	int valid = 0;	unionfs_read_lock(dentry->d_sb, UNIONFS_SMUTEX_CHILD);	parent = unionfs_lock_parent(dentry, UNIONFS_DMUTEX_PARENT);	unionfs_lock_dentry(dentry, UNIONFS_DMUTEX_CHILD);	valid = __unionfs_d_revalidate(dentry, parent, false, 0);	if (unlikely(!valid)) {		err = -ESTALE;		goto out;	}	/*	 * It's only a bug if this dentry was not negative and couldn't be	 * revalidated (shouldn't happen).	 */	BUG_ON(!valid && dentry->d_inode);	lower_dentry = find_writeable_branch(dir, dentry);	if (IS_ERR(lower_dentry)) {		err = PTR_ERR(lower_dentry);		goto out;	}	lower_parent_dentry = lock_parent(lower_dentry);	if (IS_ERR(lower_parent_dentry)) {		err = PTR_ERR(lower_parent_dentry);		goto out_unlock;	}	err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);	if (!err) {		err = PTR_ERR(unionfs_interpose(dentry, dir->i_sb, 0));		if (!err) {			unionfs_copy_attr_times(dir);			fsstack_copy_inode_size(dir,						lower_parent_dentry->d_inode);			/* update no. of links on parent directory */			set_nlink(dir, unionfs_get_nlinks(dir));		}	}out_unlock:	unlock_dir(lower_parent_dentry);out:	dput(wh_dentry);	kfree(name);	if (!err) {		unionfs_postcopyup_setmnt(dentry);		unionfs_check_inode(dir);		unionfs_check_dentry(dentry);	}	unionfs_unlock_dentry(dentry);	unionfs_unlock_parent(dentry, parent);	unionfs_read_unlock(dentry->d_sb);	return err;}
开发者ID:rhamilton1415,项目名称:steamlink-sdk,代码行数:67,



注:本文中的vfs_mknod函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ vfs_open函数代码示例
C++ vfs_mkdir函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。