Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/nfs/nfs4_attrmap.h
Real path: /usr/include/nfs/nfs4_attrmap.h
Zurück
/* * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. */ #ifndef _NFS4_ATTRMAP_H #define _NFS4_ATTRMAP_H #ifdef _KERNEL #ifdef __cplusplus extern "C" { #endif /* * ATTRMAP_SET sets (to 1) bits in tgt_map * which are set in mask_map. */ #define ATTRMAP_SET(tgt_map, mask_map) { \ (tgt_map).d.d0 |= (mask_map).d.d0; \ (tgt_map).d.d1 |= (mask_map).d.d1; \ } /* * ATTRMAP_CLR clears (sets to 0) bits in tgt_map * which are set in mask_map */ #define ATTRMAP_CLR(tgt_map, mask_map) { \ (tgt_map).d.d0 &= ~(mask_map).d.d0; \ (tgt_map).d.d1 &= ~(mask_map).d.d1; \ } /* * ATTRMAP_MASK clears (sets to 0) bits in tgt_map * which are not set in mask_map */ #define ATTRMAP_MASK(tgt_map, mask_map) { \ (tgt_map).d.d0 &= (mask_map).d.d0; \ (tgt_map).d.d1 &= (mask_map).d.d1; \ } /* * ATTRMAP_XOR xors tgt_map and mask_map. * Result is stored in tgt_map. */ #define ATTRMAP_XOR(tgt_map, mask_map) { \ (tgt_map).d.d0 ^= (mask_map).d.d0; \ (tgt_map).d.d1 ^= (mask_map).d.d1; \ } /* * ATTRMAP_TST evaluates to nonzero if any of the mask_map bits * are set in map. */ #define ATTRMAP_TST(map, mask_map) \ (((map).d.d0 & (mask_map).d.d0) != 0 || \ ((map).d.d1 & (mask_map).d.d1) != 0) /* * ATTRMAP_TST_CMPL evaluates to nonzero if any bits not set * in mask_map are set in map. (tests complement of map mask) */ #define ATTRMAP_TST_CMPL(map, mask_map) \ (((map).d.d0 & ~((mask_map).d.d0)) != 0 || \ ((map).d.d1 & ~((mask_map).d.d1)) != 0) /* * ATTRMAP_EQL evaluates to nonzero if both dwords of map1 are * equal to both dwords of map2 */ #define ATTRMAP_EQL(map1, map2) \ ((map1).d.d0 == (map2).d.d0 && (map1).d.d1 == (map2).d.d1) /* * ATTRMAP_EMPTY evaluates to nonzero if both map dwords are 0 * (no bits are set in map) */ #define ATTRMAP_EMPTY(map) ((map).d.d0 == 0 && (map).d.d1 == 0) #if defined(_BIG_ENDIAN) typedef struct am4word { uint32_t w0; uint32_t w1; uint32_t w2; uint32_t w3; } am4word_t; #elif defined(_LITTLE_ENDIAN) typedef struct am4word { uint32_t w1; uint32_t w0; uint32_t w3; uint32_t w2; } am4word_t; #endif typedef struct am4dword { uint64_t d0; uint64_t d1; } am4dword_t; union attrmap4_u { am4dword_t d; am4word_t w; }; typedef union attrmap4_u attrmap4; /* * The ATTR_* macros take an attrmap4 and the short * attribute name. The short name doesn't include * the FATTR4_ prefix (or the _MASK suffix). * * ATTR_ISSET evaluates to non-zero if the attr_nm is set * in the attrmap (am4). * * ATTR_CLR sets the attr bit in am4 to 0 * * ATTR_SET sets the attr bit in am4 to 1 */ #define ATTR_ISSET(am4, attr_nm) \ (((am4).__dw_##attr_nm & FATTR4_##attr_nm##_MASK) != 0) #define ATTR_CLR(am4, attr_nm) \ (am4).__dw_##attr_nm &= ~(FATTR4_##attr_nm##_MASK) #define ATTR_SET(am4, attr_nm) \ (am4).__dw_##attr_nm |= FATTR4_##attr_nm##_MASK #ifdef __cplusplus } #endif #endif /* _KERNEL */ #endif /* _NFS4_ATTRMAP_H */