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

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

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

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

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

示例1: tmpfs_truncate

/* * Caller must hold an exclusive node lock. */inttmpfs_truncate(struct vnode *vp, off_t length){	int error;	struct tmpfs_node *node;	node = VP_TO_TMPFS_NODE(vp);	if (length < 0) {		error = EINVAL;		goto out;	}	if (node->tn_size == length) {		error = 0;		goto out;	}	if (length > VFS_TO_TMPFS(vp->v_mount)->tm_maxfilesize)		return (EFBIG);	error = tmpfs_reg_resize(vp, length, 1);	if (error == 0)		node->tn_status |= TMPFS_NODE_CHANGED | TMPFS_NODE_MODIFIED;out:	tmpfs_update(vp);	return error;}
开发者ID:kusumi,项目名称:DragonFlyBSD,代码行数:35,


示例2: tmpfs_close

static inttmpfs_close(struct vop_close_args *v){	struct vnode *vp = v->a_vp;	/* Update node times. */	tmpfs_update(vp);	return (0);}
开发者ID:hmatyschok,项目名称:MeshBSD,代码行数:10,


示例3: tmpfs_setattr

inttmpfs_setattr(struct vop_setattr_args *v){	struct vnode *vp = v->a_vp;	struct vattr *vap = v->a_vap;	struct ucred *cred = v->a_cred;	struct tmpfs_node *node = VP_TO_TMPFS_NODE(vp);	int error = 0;	int kflags = 0;	TMPFS_NODE_LOCK(node);	if (error == 0 && (vap->va_flags != VNOVAL)) {		error = tmpfs_chflags(vp, vap->va_flags, cred);		kflags |= NOTE_ATTRIB;	}	if (error == 0 && (vap->va_size != VNOVAL)) {		if (vap->va_size > node->tn_size)			kflags |= NOTE_WRITE | NOTE_EXTEND;		else			kflags |= NOTE_WRITE;		error = tmpfs_chsize(vp, vap->va_size, cred);	}	if (error == 0 && (vap->va_uid != (uid_t)VNOVAL ||			   vap->va_gid != (gid_t)VNOVAL)) {		error = tmpfs_chown(vp, vap->va_uid, vap->va_gid, cred);		kflags |= NOTE_ATTRIB;	}	if (error == 0 && (vap->va_mode != (mode_t)VNOVAL)) {		error = tmpfs_chmod(vp, vap->va_mode, cred);		kflags |= NOTE_ATTRIB;	}	if (error == 0 && ((vap->va_atime.tv_sec != VNOVAL &&	    vap->va_atime.tv_nsec != VNOVAL) ||	    (vap->va_mtime.tv_sec != VNOVAL &&	    vap->va_mtime.tv_nsec != VNOVAL) )) {		error = tmpfs_chtimes(vp, &vap->va_atime, &vap->va_mtime,				      vap->va_vaflags, cred);		kflags |= NOTE_ATTRIB;	}	/*	 * Update the node times.  We give preference to the error codes	 * generated by this function rather than the ones that may arise	 * from tmpfs_update.	 */	tmpfs_update(vp);	TMPFS_NODE_UNLOCK(node);	tmpfs_knote(vp, kflags);	return (error);}
开发者ID:wan721,项目名称:DragonFlyBSD,代码行数:55,


示例4: tmpfs_fifo_close

static inttmpfs_fifo_close(struct vop_close_args *v){	struct tmpfs_node *node;	node = VP_TO_TMPFS_NODE(v->a_vp);	tmpfs_set_status(VFS_TO_TMPFS(v->a_vp->v_mount), node,	    TMPFS_NODE_ACCESSED);	tmpfs_update(v->a_vp);	return (fifo_specops.vop_close(v));}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:11,


示例5: tmpfs_fifo_close

inttmpfs_fifo_close(void *v){	struct vop_close_args /* {		struct vnode	*a_vp;		int		a_fflag;		kauth_cred_t	a_cred;	} */ *ap = v;	struct vnode *vp = ap->a_vp;	tmpfs_update(vp, NULL, NULL, 0);	return (fifo_close(v));}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:13,


示例6: tmpfs_spec_close

inttmpfs_spec_close(void *v){	struct vop_close_args /* {		struct vnode	*a_vp;		int		a_fflag;		kauth_cred_t	a_cred;	} */ *ap = v;	struct vnode *vp = ap->a_vp;	tmpfs_update(VP_TO_TMPFS_NODE(vp), NULL);	return (spec_close(ap));}
开发者ID:darksoul42,项目名称:bitrig,代码行数:13,


示例7: tmpfs_fifo_close

inttmpfs_fifo_close(void *v){	struct vop_close_args /* {		struct vnode	*a_vp;		int		a_fflag;		kauth_cred_t	a_cred;	} */ *ap = v;	vnode_t *vp = ap->a_vp;	tmpfs_update(vp, NULL, NULL, NULL, UPDATE_CLOSE);	return VOCALL(fifo_vnodeop_p, VOFFSET(vop_close), v);}
开发者ID:RyanLucchese,项目名称:rumpkernel-netbsd-src,代码行数:13,


示例8: tmpfs_spec_read

inttmpfs_spec_read(void *v){	struct vop_read_args /* {		struct vnode *a_vp;		struct uio *a_uio;		int a_ioflag;		kauth_cred_t a_cred;	} */ *ap = v;	struct vnode *vp = ap->a_vp;	tmpfs_update(VP_TO_TMPFS_NODE(vp), TMPFS_NODE_ACCESSED);	return (spec_read(ap));}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:14,


示例9: tmpfs_spec_write

inttmpfs_spec_write(void *v){	struct vop_write_args /* {		struct vnode *a_vp;		struct uio *a_uio;		int a_ioflag;		kauth_cred_t a_cred;	} */ *ap = v;	vnode_t *vp = ap->a_vp;	tmpfs_update(vp, TMPFS_UPDATE_MTIME);	return VOCALL(spec_vnodeop_p, VOFFSET(vop_write), v);}
开发者ID:ryo,项目名称:netbsd-src,代码行数:14,


示例10: tmpfs_link

static inttmpfs_link(struct vop_link_args *v){	struct vnode *dvp = v->a_tdvp;	struct vnode *vp = v->a_vp;	struct componentname *cnp = v->a_cnp;	int error;	struct tmpfs_dirent *de;	struct tmpfs_node *node;	MPASS(VOP_ISLOCKED(dvp));	MPASS(cnp->cn_flags & HASBUF);	MPASS(dvp != vp); /* XXX When can this be false? */	node = VP_TO_TMPFS_NODE(vp);	/* Ensure that we do not overflow the maximum number of links imposed	 * by the system. */	MPASS(node->tn_links <= LINK_MAX);	if (node->tn_links == LINK_MAX) {		error = EMLINK;		goto out;	}	/* We cannot create links of files marked immutable or append-only. */	if (node->tn_flags & (IMMUTABLE | APPEND)) {		error = EPERM;		goto out;	}	/* Allocate a new directory entry to represent the node. */	error = tmpfs_alloc_dirent(VFS_TO_TMPFS(vp->v_mount), node,	    cnp->cn_nameptr, cnp->cn_namelen, &de);	if (error != 0)		goto out;	/* Insert the new directory entry into the appropriate directory. */	if (cnp->cn_flags & ISWHITEOUT)		tmpfs_dir_whiteout_remove(dvp, cnp);	tmpfs_dir_attach(dvp, de);	/* vp link count has changed, so update node times. */	node->tn_status |= TMPFS_NODE_CHANGED;	tmpfs_update(vp);	error = 0;out:	return error;}
开发者ID:hmatyschok,项目名称:MeshBSD,代码行数:50,


示例11: tmpfs_fsync

/* * fsync is usually a NOP, but we must take action when unmounting or * when recycling. */static inttmpfs_fsync(struct vop_fsync_args *v){	struct tmpfs_node *node;	struct vnode *vp = v->a_vp;	node = VP_TO_TMPFS_NODE(vp);	tmpfs_update(vp);	if (vp->v_type == VREG) {		if (vp->v_flag & VRECLAIMED) {			if (node->tn_links == 0)				tmpfs_truncate(vp, 0);			else				vfsync(v->a_vp, v->a_waitfor, 1, NULL, NULL);		}	}	return 0;}
开发者ID:wan721,项目名称:DragonFlyBSD,代码行数:23,


示例12: tmpfs_getattr

inttmpfs_getattr(struct vop_getattr_args *v){	struct vnode *vp = v->a_vp;	struct vattr *vap = v->a_vap;	struct tmpfs_node *node;	node = VP_TO_TMPFS_NODE(vp);	lwkt_gettoken(&vp->v_mount->mnt_token);	tmpfs_update(vp);	vap->va_type = vp->v_type;	vap->va_mode = node->tn_mode;	vap->va_nlink = node->tn_links;	vap->va_uid = node->tn_uid;	vap->va_gid = node->tn_gid;	vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];	vap->va_fileid = node->tn_id;	vap->va_size = node->tn_size;	vap->va_blocksize = PAGE_SIZE;	vap->va_atime.tv_sec = node->tn_atime;	vap->va_atime.tv_nsec = node->tn_atimensec;	vap->va_mtime.tv_sec = node->tn_mtime;	vap->va_mtime.tv_nsec = node->tn_mtimensec;	vap->va_ctime.tv_sec = node->tn_ctime;	vap->va_ctime.tv_nsec = node->tn_ctimensec;	vap->va_gen = node->tn_gen;	vap->va_flags = node->tn_flags;	if (vp->v_type == VBLK || vp->v_type == VCHR)	{		vap->va_rmajor = umajor(node->tn_rdev);		vap->va_rminor = uminor(node->tn_rdev);	}	vap->va_bytes = round_page(node->tn_size);	vap->va_filerev = 0;	lwkt_reltoken(&vp->v_mount->mnt_token);	return 0;}
开发者ID:varialus,项目名称:DragonFlyX,代码行数:41,


示例13: tmpfs_getattr

inttmpfs_getattr(struct vop_getattr_args *v){	struct vnode *vp = v->a_vp;	struct vattr *vap = v->a_vap;	vm_object_t obj;	struct tmpfs_node *node;	node = VP_TO_TMPFS_NODE(vp);	tmpfs_update(vp);	vap->va_type = vp->v_type;	vap->va_mode = node->tn_mode;	vap->va_nlink = node->tn_links;	vap->va_uid = node->tn_uid;	vap->va_gid = node->tn_gid;	vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];	vap->va_fileid = node->tn_id;	vap->va_size = node->tn_size;	vap->va_blocksize = PAGE_SIZE;	vap->va_atime = node->tn_atime;	vap->va_mtime = node->tn_mtime;	vap->va_ctime = node->tn_ctime;	vap->va_birthtime = node->tn_birthtime;	vap->va_gen = node->tn_gen;	vap->va_flags = node->tn_flags;	vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?		node->tn_rdev : NODEV;	if (vp->v_type == VREG) {		obj = node->tn_reg.tn_aobj;		vap->va_bytes = (u_quad_t)obj->resident_page_count * PAGE_SIZE;	} else		vap->va_bytes = node->tn_size;	vap->va_filerev = 0;	return 0;}
开发者ID:hmatyschok,项目名称:MeshBSD,代码行数:38,


示例14: tmpfs_nlink

static inttmpfs_nlink(struct vop_nlink_args *v){	struct vnode *dvp = v->a_dvp;	struct vnode *vp = v->a_vp;	struct namecache *ncp = v->a_nch->ncp;	struct tmpfs_dirent *de;	struct tmpfs_node *node;	struct tmpfs_node *dnode;	struct mount *mp;	int error;	mp = dvp->v_mount;	KKASSERT(dvp != vp); /* XXX When can this be false? */	node = VP_TO_TMPFS_NODE(vp);	dnode = VP_TO_TMPFS_NODE(dvp);	TMPFS_NODE_LOCK(dnode);	/* XXX: Why aren't the following two tests done by the caller? */	/* Hard links of directories are forbidden. */	if (vp->v_type == VDIR) {		error = EPERM;		goto out;	}	/* Cannot create cross-device links. */	if (dvp->v_mount != vp->v_mount) {		error = EXDEV;		goto out;	}	/* Ensure that we do not overflow the maximum number of links imposed	 * by the system. */	KKASSERT(node->tn_links <= LINK_MAX);	if (node->tn_links >= LINK_MAX) {		error = EMLINK;		goto out;	}	/* We cannot create links of files marked immutable or append-only. */	if (node->tn_flags & (IMMUTABLE | APPEND)) {		error = EPERM;		goto out;	}	/* Allocate a new directory entry to represent the node. */	error = tmpfs_alloc_dirent(VFS_TO_TMPFS(vp->v_mount), node,				   ncp->nc_name, ncp->nc_nlen, &de);	if (error != 0)		goto out;	/* Insert the new directory entry into the appropriate directory. */	tmpfs_dir_attach(dnode, de);	/* vp link count has changed, so update node times. */	TMPFS_NODE_LOCK(node);	node->tn_status |= TMPFS_NODE_CHANGED;	TMPFS_NODE_UNLOCK(node);	tmpfs_update(vp);	tmpfs_knote(vp, NOTE_LINK);	cache_setunresolved(v->a_nch);	cache_setvp(v->a_nch, vp);	error = 0;out:	TMPFS_NODE_UNLOCK(dnode);	if (error == 0)		tmpfs_knote(dvp, NOTE_WRITE);	return error;}
开发者ID:wan721,项目名称:DragonFlyBSD,代码行数:75,


示例15: tmpfs_nrmdir

//.........这里部分代码省略.........	 * will not get called when we release it.	 */	error = cache_vget(v->a_nch, v->a_cred, LK_SHARED, &vp);	KKASSERT(error == 0);	vn_unlock(vp);	/*	 * Prevalidate so we don't hit an assertion later	 */	if (vp->v_type != VDIR) {		error = ENOTDIR;		goto out;	}	tmp = VFS_TO_TMPFS(dvp->v_mount);	dnode = VP_TO_TMPFS_DIR(dvp);	node = VP_TO_TMPFS_DIR(vp);	/*	 * Directories with more than two entries ('.' and '..') cannot	 * be removed.	 */	if (node->tn_size > 0) {		error = ENOTEMPTY;		goto out;	}	if ((dnode->tn_flags & APPEND)	    || (node->tn_flags & (NOUNLINK | IMMUTABLE | APPEND))) {		error = EPERM;		goto out;	}	/*	 * This invariant holds only if we are not trying to	 * remove "..".  We checked for that above so this is safe now.	 */	KKASSERT(node->tn_dir.tn_parent == dnode);	/*	 * Get the directory entry associated with node (vp).  This	 * was filled by tmpfs_lookup while looking up the entry.	 */	TMPFS_NODE_LOCK(dnode);	de = tmpfs_dir_lookup(dnode, node, ncp);	KKASSERT(TMPFS_DIRENT_MATCHES(de, ncp->nc_name, ncp->nc_nlen));	/* Check flags to see if we are allowed to remove the directory. */	if ((dnode->tn_flags & APPEND) ||	    node->tn_flags & (NOUNLINK | IMMUTABLE | APPEND)) {		error = EPERM;		TMPFS_NODE_UNLOCK(dnode);		goto out;	}	/* Detach the directory entry from the directory (dnode). */	tmpfs_dir_detach(dnode, de);	TMPFS_NODE_UNLOCK(dnode);	/* No vnode should be allocated for this entry from this point */	TMPFS_NODE_LOCK(dnode);	TMPFS_ASSERT_ELOCKED(dnode);	TMPFS_NODE_LOCK(node);	TMPFS_ASSERT_ELOCKED(node);	/*	 * Must set parent linkage to NULL (tested by ncreate to disallow	 * the creation of new files/dirs in a deleted directory)	 */	node->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_CHANGED |			   TMPFS_NODE_MODIFIED;	dnode->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_CHANGED |			    TMPFS_NODE_MODIFIED;	TMPFS_NODE_UNLOCK(node);	TMPFS_NODE_UNLOCK(dnode);	/* Free the directory entry we just deleted.  Note that the node	 * referred by it will not be removed until the vnode is really	 * reclaimed. */	tmpfs_free_dirent(tmp, de);	/* Release the deleted vnode (will destroy the node, notify	 * interested parties and clean it from the cache). */	TMPFS_NODE_LOCK(dnode);	dnode->tn_status |= TMPFS_NODE_CHANGED;	TMPFS_NODE_UNLOCK(dnode);	tmpfs_update(dvp);	cache_unlink(v->a_nch);	tmpfs_knote(dvp, NOTE_WRITE | NOTE_LINK);	error = 0;out:	vrele(vp);	return error;}
开发者ID:wan721,项目名称:DragonFlyBSD,代码行数:101,



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


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