The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

VOP_SETATTR (9)
  • >> VOP_SETATTR (9) ( FreeBSD man: Ядро )

  • BSD mandoc
     

    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 thread *td);
    int VOP_SETATTR (struct vnode *vp struct vattr *vap struct ucred *cred struct thread *td);
     

    DESCRIPTION

    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 VOP_SETATTR ();
    should be set to the value VNOVAL 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

    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.

    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

    VOP_GETATTR ();
    returns 0 if it was able to retrieve the attribute data via Fa *vap , otherwise an appropriate error is returned. 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_ACCESS9  

    AUTHORS

    This manual page was written by An Doug Rabson .


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    LOCKS
    RETURN VALUES
    PSEUDOCODE
    ERRORS
    SEE ALSO
    AUTHORS


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру