VOP_GETATTR man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

VOP_ATTRIB(9)		 BSD Kernel Developer's Manual		 VOP_ATTRIB(9)

NAME
     VOP_GETATTR, VOP_SETATTR — get and set attributes on a file or directory

SYNOPSIS
     #include <sys/param.h>
     #include <sys/vnode.h>

     int
     VOP_GETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
	 struct proc *p);

     int
     VOP_SETATTR(struct vnode *vp, struct vattr *vap, struct ucred *cred,
	 struct proc *p);

DESCRIPTION
     These entry points manipulate various attributes of a file or directory,
     including file permissions, owner, group, size, access time and modifica‐
     tion time.

     The arguments are:

     vp	   the vnode of the file

     vap   the attributes of the file

     cred  the user credentials of the calling process

     p	   the process

     Attributes which are not being modified by VOP_SETATTR(9) should be set
     to the value VNOVAL.

LOCKS
     VOP_GETATTR(9) expects the vnode to be locked on entry and will leave the
     vnode locked on return.

     VOP_SETATTR(9) expects the vnode to be locked on entry and will leave the
     vnode locked on return.

RETURN VALUES
     VOP_GETATTR(9) returns information about the file in *vap.
     VOP_SETATTR(9) 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 proc *p)
     {
	 /*
	  * Fill in the contents of *vap with information from
	  * the filesystem.
	  */
	 ...;

	 return 0;
     }

     int
     vop_setattr(struct vnode *vp, struct vattr *vap,
		 struct ucred *cred, struct proc *p)
     {
	 /*
	  * 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
     [EPERM]		The file is immutable

     [EACCES]		Permission denied

     [EROFS]		The filesystem is readonly

SEE ALSO
     vnode(9), VOP_ACCESS(9)

AUTHORS
     This man page was written by Doug Rabson.

BSD				 July 24, 1996				   BSD
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net