home *** CD-ROM | disk | FTP | other *** search
/ ftp.parl.clemson.edu / 2015-02-07.ftp.parl.clemson.edu.tar / ftp.parl.clemson.edu / pub / pvfs2 / orangefs-2.8.3-20110323.tar.gz / orangefs-2.8.3-20110323.tar / orangefs / src / io / buffer / flags.h < prev    next >
C/C++ Source or Header  |  2004-09-21  |  5KB  |  128 lines

  1. /*
  2.  * Macros for manipulating and testing extent->flags
  3.  */
  4.  
  5. #ifndef _FLAGS_H
  6. #define _FLAGS_H
  7.  
  8. #define test_bit(nr, addr)   ( *(addr) & (1UL <<(nr)) )
  9. #define set_bit(nr, addr)     *(addr) |=  (1UL <<(nr));
  10.  
  11. #define clear_bit(nr, addr)  *(addr) &= ~( (1UL <<(nr)) ); 
  12. static inline int test_and_set_bit(int nr, unsigned long * addr) 
  13. {
  14.     int oldbit;
  15.  
  16.     oldbit = test_bit( nr, addr);
  17.     set_bit(nr, addr);
  18.     
  19.         return oldbit;
  20. }
  21.  
  22. #define PG_locked          0    /* Page is locked. Don't touch. */
  23. #define PG_error         1
  24. #define PG_clean         2    /* Clean page */
  25. #define PG_dirty          3 
  26.  
  27. #define PG_uptodate         4 
  28. #define PG_lru             5
  29. #define PG_active         6
  30. #define PG_rmw             7   /* read is on this extent for rmw */    
  31.  
  32. #define PG_readcomm        8    /* Read communication */
  33. #define PG_readpending        9    /* Read op pending */
  34. #define PG_writecomm        10    /* Write communication */
  35. #define PG_writepending        11    /* Write op pending */
  36.  
  37. #define PG_readpreparing    12    /* Preparing for reading */
  38. #define PG_writepreparing    13    /* Preparing for writing */
  39.  
  40. #define PG_referenced        14 
  41. #define PG_blank            15    /* Blank page */
  42.  
  43. /*
  44.  * Manipulation of state flags
  45.  */
  46. #define PageLocked(page)        \
  47.         test_bit(PG_locked, &(page)->flags)
  48. #define SetPageLocked(page)        \
  49.         set_bit(PG_locked, &(page)->flags)
  50. #define TestSetPageLocked(page)        \
  51.         test_and_set_bit(PG_locked, &(page)->flags)
  52. #define ClearPageLocked(page)        \
  53.         clear_bit(PG_locked, &(page)->flags)
  54.  
  55. #define PageError(page)        test_bit(PG_error, &(page)->flags)
  56. #define SetPageError(page)    set_bit(PG_error, &(page)->flags)
  57. #define ClearPageError(page)    clear_bit(PG_error, &(page)->flags)
  58.  
  59. #define PageDirty(page)        test_bit(PG_dirty, &(page)->flags)
  60. #define SetPageDirty(page)    set_bit(PG_dirty, &(page)->flags)
  61. #define TestSetPageDirty(page)    test_and_set_bit(PG_dirty, &(page)->flags)
  62. #define ClearPageDirty(page)    clear_bit(PG_dirty, &(page)->flags)
  63.  
  64. #define SetPageLRU(page)    set_bit(PG_lru, &(page)->flags)
  65. #define PageLRU(page)        test_bit(PG_lru, &(page)->flags)
  66. #define TestSetPageLRU(page)    test_and_set_bit(PG_lru, &(page)->flags)
  67.  
  68. #define PageActive(page)    test_bit(PG_active, &(page)->flags)
  69. #define SetPageActive(page)    set_bit(PG_active, &(page)->flags)
  70. #define ClearPageActive(page)    clear_bit(PG_active, &(page)->flags)
  71. #define TestSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags)
  72.  
  73. #define PageReferenced(page)    test_bit(PG_referenced, &(page)->flags)
  74. #define SetPageReferenced(page) set_bit(PG_referenced, &(page)->flags)
  75. #define ClearPageReferenced(page)   clear_bit(PG_referenced, &(page)->flags)
  76.  
  77. /* new stuff */
  78. #define PageRcomm(page)        test_bit(PG_readcomm, &(page)->flags)
  79. #define SetPageRcomm(page)    set_bit(PG_readcomm, &(page)->flags)
  80. #define ClearPageRcomm(page)    clear_bit(PG_readcomm, &(page)->flags)
  81.  
  82. #define PageWcomm(page)        test_bit(PG_writecomm, &(page)->flags)
  83. #define SetPageWcomm(page)    set_bit(PG_writecomm, &(page)->flags)
  84. #define ClearPageWcomm(page)    clear_bit(PG_writecomm, &(page)->flags)
  85.  
  86. #define PageReadPending(page)     test_bit(PG_readpending, &(page)->flags)
  87. #define SetPageReadPending(page) set_bit(PG_readpending, &(page)->flags)
  88. #define ClearPageReadPending(page) clear_bit(PG_readpending, &(page)->flags)
  89.  
  90. #define PageReadPreparing(page)     test_bit(PG_readpreparing, &(page)->flags)
  91. #define SetPageReadPreparing(page) set_bit(PG_readpreparing, &(page)->flags)
  92. #define ClearPageReadPreparing(page) clear_bit(PG_readpreparing, &(page)->flags)
  93.  
  94. #define PageWritePending(page)     test_bit(PG_writepending, &(page)->flags)
  95. #define SetPageWritePending(page) set_bit(PG_writepending, &(page)->flags)
  96. #define ClearPageWritePending(page) clear_bit(PG_writepending, &(page)->flags)
  97.  
  98. #define PageWritePreparing(page)     test_bit(PG_writepreparing, &(page)->flags)
  99. #define SetPageWritePreparing(page) set_bit(PG_writepreparing, &(page)->flags)
  100. #define ClearPageWritePreparing(page) clear_bit(PG_writepreparing, &(page)->flags)
  101.  
  102. #define PageClean(page)     test_bit(PG_clean, &(page)->flags)
  103. #define SetPageClean(page) set_bit(PG_clean, &(page)->flags)
  104. #define ClearPageClean(page) clear_bit(PG_clean, &(page)->flags)
  105.  
  106. #define PageBlank(page)     test_bit(PG_blank, &(page)->flags)
  107. #define SetPageBlank(page) set_bit(PG_blank, &(page)->flags)
  108. #define ClearPageBlank(page) clear_bit(PG_blank, &(page)->flags)
  109.  
  110. #define PageRMW(page)     test_bit(PG_rmw, &(page)->flags)
  111. #define SetPageRMW(page) set_bit(PG_rmw, &(page)->flags)
  112. #define ClearPageRMW(page) clear_bit(PG_rmw, &(page)->flags)
  113.  
  114. #define PageWriteCount(page) ((page)->writes)
  115. #define IncWriteCount(page) ((page)->writes++);
  116. #define DecWriteCount(page) ((page)->writes--);
  117.  
  118. #define PageReadCount(page) ((page)->reads)
  119. #define IncReadCount(page)  ((page)->reads++);
  120. #define DecReadCount(page)  ((page)->reads--);
  121.  
  122. #define ClearPageFlags(page) (page)->flags =0;
  123.  
  124. #define extent_ref_release(p) 
  125. #define extent_ref_get(p)
  126.  
  127. #endif    /* _FLAGS_H */
  128.