57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
/*
|
|
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
|
|
*
|
|
* Copyright (C) 2002-2018 Aleph One Ltd.
|
|
*
|
|
* Created by Charles Manning <[email protected]>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __YAFFS_CACHE_H__
|
|
#define __YAFFS_CACHE_H__
|
|
|
|
#include "yaffs_guts.h"
|
|
|
|
|
|
/* Does the object have a dirty cache ? */
|
|
int yaffs_obj_cache_dirty(struct yaffs_obj *obj);
|
|
|
|
/* Flush the cache associated with a file, either discarding or keeping */
|
|
void yaffs_flush_file_cache(struct yaffs_obj *obj, int discard);
|
|
|
|
/* Flush everything in the cache, either discarding or keeping */
|
|
void yaffs_flush_whole_cache(struct yaffs_dev *dev, int discard);
|
|
|
|
/* Grab a cache item during read or write. */
|
|
struct yaffs_cache *yaffs_grab_chunk_cache(struct yaffs_dev *dev);
|
|
|
|
/* Find a cached chunk */
|
|
struct yaffs_cache *yaffs_find_chunk_cache(const struct yaffs_obj *obj,
|
|
int chunk_id);
|
|
|
|
/* Mark the chunk for the least recently used algorithym */
|
|
void yaffs_use_cache(struct yaffs_dev *dev, struct yaffs_cache *cache,
|
|
int is_write);
|
|
|
|
|
|
/* Invalidate a single cache page. The cache no longer holds valid data. */
|
|
void yaffs_invalidate_chunk_cache(struct yaffs_obj *object,
|
|
int chunk_id);
|
|
|
|
/* Invalidate all the cache pages associated with this object
|
|
* Do this whenever ther file is deleted or resized.
|
|
*/
|
|
void yaffs_invalidate_file_cache(struct yaffs_obj *in);
|
|
|
|
|
|
int yaffs_count_dirty_caches(struct yaffs_dev *dev);
|
|
|
|
/* Init/deinit. */
|
|
int yaffs_cache_init(struct yaffs_dev *dev);
|
|
void yaffs_cache_deinit(struct yaffs_dev *dev);
|
|
|
|
#endif
|