]> mj.ucw.cz Git - libucw.git/blobdiff - lib/pagecache.h
Fixed bug in joining.
[libucw.git] / lib / pagecache.h
index 67450e796e850b4bcf27f1b19136597c81e92516..ef4bf5af5740c5d710e6ac58da5cc82a07dcec70 100644 (file)
@@ -1,11 +1,14 @@
 /*
- *     Sherlock Library -- File Page Cache
+ *     UCW Library -- File Page Cache
  *
- *     (c) 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+ *     (c) 1999--2002 Martin Mares <mj@ucw.cz>
+ *
+ *     This software may be freely distributed and used according to the terms
+ *     of the GNU Lesser General Public License.
  */
 
-#ifndef _SHERLOCK_PAGECACHE_H
-#define _SHERLOCK_PAGECACHE_H
+#ifndef _UCW_PAGECACHE_H
+#define _UCW_PAGECACHE_H
 
 #include "lib/lists.h"
 
@@ -14,7 +17,8 @@ struct page_cache;
 struct page {
   node n;                              /* Node in page list */
   node hn;                             /* Node in hash table */
-  sh_off_t key;                                /* Lower bits contain file handle */
+  sh_off_t pos;
+  uns fd;
   uns flags;
   uns lock_count;
   byte data[0];
@@ -25,13 +29,14 @@ struct page {
 
 struct page_cache *pgc_open(uns page_size, uns max_pages);
 void pgc_close(struct page_cache *);
-void pgc_debug(struct page_cache *);
+void pgc_debug(struct page_cache *, int mode);
 void pgc_flush(struct page_cache *);                           /* Write all unwritten pages */
 void pgc_cleanup(struct page_cache *);                         /* Deallocate all unused buffers */
 struct page *pgc_read(struct page_cache *, int fd, sh_off_t);  /* Read page and lock it */
 struct page *pgc_get(struct page_cache *, int fd, sh_off_t);   /* Get page for writing */
+struct page *pgc_get_zero(struct page_cache *, int fd, sh_off_t); /* ... and clear it */
 void pgc_put(struct page_cache *, struct page *);              /* Release page */
-void pgc_put_dirty(struct page_cache *, struct page *);                /* Mark page as dirty and release it */
+void pgc_mark_dirty(struct page_cache *, struct page *);       /* Mark locked page as dirty */
 byte *pgc_read_data(struct page_cache *, int fd, sh_off_t, uns *);     /* Partial reading */
 
 #endif