Annotation of qemu/hw/9pfs/virtio-9p-xattr.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Virtio 9p
                      3:  *
                      4:  * Copyright IBM, Corp. 2010
                      5:  *
                      6:  * Authors:
                      7:  *  Aneesh Kumar K.V <[email protected]>
                      8:  *
                      9:  * This work is licensed under the terms of the GNU GPL, version 2.  See
                     10:  * the COPYING file in the top-level directory.
                     11:  *
                     12:  */
                     13: #ifndef _QEMU_VIRTIO_9P_XATTR_H
                     14: #define _QEMU_VIRTIO_9P_XATTR_H
                     15: 
                     16: #include <attr/xattr.h>
                     17: 
                     18: typedef struct xattr_operations
                     19: {
                     20:     const char *name;
                     21:     ssize_t (*getxattr)(FsContext *ctx, const char *path,
                     22:                         const char *name, void *value, size_t size);
                     23:     ssize_t (*listxattr)(FsContext *ctx, const char *path,
                     24:                          char *name, void *value, size_t size);
                     25:     int (*setxattr)(FsContext *ctx, const char *path, const char *name,
                     26:                     void *value, size_t size, int flags);
                     27:     int (*removexattr)(FsContext *ctx,
                     28:                        const char *path, const char *name);
                     29: } XattrOperations;
                     30: 
                     31: 
                     32: extern XattrOperations mapped_user_xattr;
                     33: extern XattrOperations passthrough_user_xattr;
                     34: 
                     35: extern XattrOperations mapped_pacl_xattr;
                     36: extern XattrOperations mapped_dacl_xattr;
                     37: extern XattrOperations passthrough_acl_xattr;
                     38: extern XattrOperations none_acl_xattr;
                     39: 
                     40: extern XattrOperations *mapped_xattr_ops[];
                     41: extern XattrOperations *passthrough_xattr_ops[];
                     42: extern XattrOperations *none_xattr_ops[];
                     43: 
                     44: ssize_t v9fs_get_xattr(FsContext *ctx, const char *path, const char *name,
                     45:                        void *value, size_t size);
                     46: ssize_t v9fs_list_xattr(FsContext *ctx, const char *path, void *value,
                     47:                         size_t vsize);
                     48: int v9fs_set_xattr(FsContext *ctx, const char *path, const char *name,
                     49:                           void *value, size_t size, int flags);
                     50: int v9fs_remove_xattr(FsContext *ctx, const char *path, const char *name);
                     51: ssize_t pt_listxattr(FsContext *ctx, const char *path, char *name, void *value,
                     52:                      size_t size);
                     53: 
                     54: static inline ssize_t pt_getxattr(FsContext *ctx, const char *path,
                     55:                                   const char *name, void *value, size_t size)
                     56: {
                     57:     char buffer[PATH_MAX];
                     58:     return lgetxattr(rpath(ctx, path, buffer), name, value, size);
                     59: }
                     60: 
                     61: static inline int pt_setxattr(FsContext *ctx, const char *path,
                     62:                               const char *name, void *value,
                     63:                               size_t size, int flags)
                     64: {
                     65:     char buffer[PATH_MAX];
                     66:     return lsetxattr(rpath(ctx, path, buffer), name, value, size, flags);
                     67: }
                     68: 
                     69: static inline int pt_removexattr(FsContext *ctx,
                     70:                                  const char *path, const char *name)
                     71: {
                     72:     char buffer[PATH_MAX];
                     73:     return lremovexattr(rpath(ctx, path, buffer), name);
                     74: }
                     75: 
                     76: static inline ssize_t notsup_getxattr(FsContext *ctx, const char *path,
                     77:                                       const char *name, void *value,
                     78:                                       size_t size)
                     79: {
                     80:     errno = ENOTSUP;
                     81:     return -1;
                     82: }
                     83: 
                     84: static inline int notsup_setxattr(FsContext *ctx, const char *path,
                     85:                                   const char *name, void *value,
                     86:                                   size_t size, int flags)
                     87: {
                     88:     errno = ENOTSUP;
                     89:     return -1;
                     90: }
                     91: 
                     92: static inline ssize_t notsup_listxattr(FsContext *ctx, const char *path,
                     93:                                        char *name, void *value, size_t size)
                     94: {
                     95:     return 0;
                     96: }
                     97: 
                     98: static inline int notsup_removexattr(FsContext *ctx,
                     99:                                      const char *path, const char *name)
                    100: {
                    101:     errno = ENOTSUP;
                    102:     return -1;
                    103: }
                    104: 
                    105: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.