#pragma once #include #include enum { CACHE_BACKING_READ = 0, CACHE_BACKING_MAPPED }; struct cch_range { off_t start; off_t end; }; struct cch_backing { u8 mode; off_t size; array(struct cch_range) available; void (*lock)(struct cch_backing *); void (*write)(struct cch_backing *, u8 *, off_t, size_t *); void (*read)(struct cch_backing *, u8 *, off_t, size_t *); u8 *(*get_ptr)(struct cch_backing *, off_t, size_t *); void (*unlock)(struct cch_backing *); void (*set_size)(struct cch_backing *, off_t, bool); off_t (*get_size_if_known)(struct cch_backing *); void (*finalize)(struct cch_backing *); void (*free)(struct cch_backing **); };