]> mj.ucw.cz Git - libucw.git/blobdiff - lib/pagecache.h
sign mismatch fixed
[libucw.git] / lib / pagecache.h
index 67450e796e850b4bcf27f1b19136597c81e92516..698177f0e026765e47c476d87de740eeb60d27b4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     Sherlock Library -- File Page Cache
  *
- *     (c) 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+ *     (c) 1999 Martin Mares <mj@ucw.cz>
  */
 
 #ifndef _SHERLOCK_PAGECACHE_H
@@ -14,7 +14,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 +26,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