X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Fpagecache.h;h=ef4bf5af5740c5d710e6ac58da5cc82a07dcec70;hb=6a26177ec0df11f55bff590d63ea02e7c9884993;hp=5c2661a0e04a6aedd31356d5cdd1187ffb90856c;hpb=05d39c073356d120fec08689dfe1c43c78ed5ed4;p=libucw.git diff --git a/lib/pagecache.h b/lib/pagecache.h index 5c2661a0..ef4bf5af 100644 --- a/lib/pagecache.h +++ b/lib/pagecache.h @@ -1,11 +1,14 @@ /* - * Sherlock Library -- File Page Cache + * UCW Library -- File Page Cache * - * (c) 1999 Martin Mares + * (c) 1999--2002 Martin Mares + * + * 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]; @@ -30,6 +34,7 @@ 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_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 */