⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bufcache.h

📁 GEEKOS是一个免费的操作系统内核
💻 H
字号:
/* * Filesystem buffer cache * Copyright (c) 2004, David H. Hovemeyer <daveho@cs.umd.edu> * $Revision: 1.7 $ * * This is free software.  You are permitted to use, * redistribute, and modify it as specified in the file "COPYING". */#ifndef GEEKOS_BUFCACHE_H#define GEEKOS_BUFCACHE_H#include <geekos/ktypes.h>#include <geekos/list.h>#include <geekos/synch.h>struct Block_Device;/* * Bits for FS_Buffer flags. */#define FS_BUFFER_DIRTY	0x01	/*!< Buffer contains uncommitted data. */#define FS_BUFFER_INUSE	0x02	/*!< Buffer is in use. */struct FS_Buffer;DEFINE_LIST(FS_Buffer_List, FS_Buffer);/*! * A buffer containing the data of one filesystem block. */struct FS_Buffer {    ulong_t fsBlockNum;		/*!< Filesystem block number. */    void *data;			/*!< In-memory data of block. May be out of sync with disk. */    uint_t flags;		/*!< Flags representing state of buffer. */    DEFINE_LINK(FS_Buffer_List, FS_Buffer);};IMPLEMENT_LIST(FS_Buffer_List, FS_Buffer);/*! * A cache for buffers containing the data for filesystem blocks. * Filesystem implementations should generally do all of their * I/O through a buffer cache. */struct FS_Buffer_Cache {    struct Block_Device *dev;		/*!< Block device. */    uint_t fsBlockSize;			/*!< Size of filesystem blocks. */    uint_t numCached;			/*!< Current number of buffers (cached blocks). */    struct FS_Buffer_List bufferList;	/*!< List of buffers. */    struct Mutex lock;			/*!< Lock for synchronization. */    struct Condition cond;		/*!< Condition: waiting for a buffer. */};struct FS_Buffer_Cache *Create_FS_Buffer_Cache(struct Block_Device *dev, uint_t fsBlockSize);int Sync_FS_Buffer_Cache(struct FS_Buffer_Cache *cache);int Destroy_FS_Buffer_Cache(struct FS_Buffer_Cache *cache);int Get_FS_Buffer(struct FS_Buffer_Cache *cache, ulong_t fsBlockNum, struct FS_Buffer **pBuf);void Modify_FS_Buffer(struct FS_Buffer_Cache *cache, struct FS_Buffer *buf);int Sync_FS_Buffer(struct FS_Buffer_Cache *cache, struct FS_Buffer *buf);int Release_FS_Buffer(struct FS_Buffer_Cache *cache, struct FS_Buffer *buf);#endif /* GEEKOS_BUFCACHE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -