Rechercher une page de manuel
VOP_SETATTR.9freebsd
Langue: en
Version: 308911 (debian - 07/07/09)
Section: 9 (Appels noyau Linux)
BSD mandoc
NAME
VOP_GETATTR VOP_SETATTR - get and set attributes on a file or directorySYNOPSIS
In sys/param.h In sys/vnode.h Ft int Fn VOP_GETATTR struct vnode *vp struct vattr *vap struct ucred *cred struct thread *td Ft int Fn VOP_SETATTR struct vnode *vp struct vattr *vap struct ucred *cred struct thread *tdDESCRIPTION
These entry points manipulate various attributes of a file or directory, including file permissions, owner, group, size, access time and modification time.The arguments are:
- Fa vp
- The vnode of the file.
- Fa vap
- The attributes of the file.
- Fa cred
- The user credentials of the calling process.
- Fa td
- The thread.
Attributes which are not being modified by Fn VOP_SETATTR should be set to the value VNOVAL Fn VATTR_NULL may be used to clear all the values, and should generally be used to reset the contents of Fa *vap prior to setting specific values.
LOCKS
Fn VOP_GETATTR expects the vnode to be locked on entry and will leave the vnode locked on return. The lock type can be either shared or exclusive.Fn VOP_SETATTR expects the vnode to be locked on entry and will leave the vnode locked on return. The lock type must be exclusive.
RETURN VALUES
Fn VOP_GETATTR returns 0 if it was able to retrieve the attribute data via Fa *vap , otherwise an appropriate error is returned. Fn VOP_SETATTR returns zero if the attributes were changed successfully, otherwise an appropriate error is returned.PSEUDOCODE
int vop_getattr(struct vnode *vp, struct vattr *vap, struct ucred *cred, struct thread *td) { /* * Fill in the contents of *vap with information from * the file system. */ ...; return 0; } int vop_setattr(struct vnode *vp, struct vattr *vap, struct ucred *cred, struct thread *td) { /* * Check for unsettable attributes. */ if ((vap->va_type != VNON) || (vap->va_nlink != VNOVAL) || (vap->va_fsid != VNOVAL) || (vap->va_fileid != VNOVAL) || (vap->va_blocksize != VNOVAL) || (vap->va_rdev != VNOVAL) || ((int)vap->va_bytes != VNOVAL) || (vap->va_gen != VNOVAL)) { return (EINVAL); } if (vap->va_flags != VNOVAL) { /* * Set the immutable and append flags of the file. */ } if (vap->va_uid != (uid_t)VNOVAL || vap->va_gid != (gid_t)VNOVAL) { /* * Change owner and/or group of the file. */ } if (vap->va_size != VNOVAL) { /* * Truncate the file to the specified size. */ } if (vap->va_atime.tv_sec != VNOVAL || vap->va_mtime.tv_sec != VNOVAL) { /* * Change access and/or modification time of file. */ } if (vap->va_mode != (mode_t)VNOVAL) { /* * Change permissions of file. */ } return 0; }
ERRORS
- Bq Er EPERM
- The file is immutable.
- Bq Er EACCES
- The caller does not have permission to modify the file or directory attributes.
- Bq Er EROFS
- The file system is read-only.
SEE ALSO
VFS(9), vnode(9), VOP_ACCESS9AUTHORS
This manual page was written by An Doug Rabson .Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre