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

📄 ds_rrlist.private.h

📁 Coda分布式文件系统源代码。其特色在于可以支持离线文件操作以及在线后的自动更新
💻 H
字号:
#ifndef _DS_RRLIST_PRIVATE_H_#define _DS_RRLIST_PRIVATE_H_#include <odytypes.h>#include "ds_list.h"#include "ds_rrlist.h"/* * ds_rrlist.private.h: implementation-specific details of  *                      resource request lists. */extern magic_t ds_rrlist_magic;#define DS_RRLIST_VALID(rp)   ((rp) && ((rp)->magic == ds_rrlist_magic))/*   Each request node is placed in four different structures for   fast access: hashed by pid and reqid, and sorted by lower bound   and upper bound.  The sorted forms are currently kept as   lists; this may change to something slicker if insertion seems   to take too long.  I don't expect these to grow very much, so   I'm really not worried about it.*/struct ds_rrlist_t {    magic_t          magic;          /* magic number */    long             value;          /* current value */    ds_hash_t       *pidhash;        /* hash table on pids */    ds_hash_t       *reqhash;        /* hash table on request id's */    ds_list_t       *less;           /* list for lower bounds */    ds_list_t       *greater;        /* list for upper bounds */};/* size of hash tables */#define DS_RRLIST_HASHSIZE 67/* We need a structure that hashes all request id's to the rrlist that   that request is currently on. *//* elements for that hash table */extern magic_t ds_rrlist_reqtab_elt_magic;#define DS_RRLIST_REQTAB_ELT_VALID(rre)   \         ((rre) && ((rre)->magic == ds_rrlist_reqtab_elt_magic))typedef struct ds_rrlist_reqtab_elt_t {    magic_t          magic;    long             reqid;    ds_rrlist_t     *list;} ds_rrlist_reqtab_elt_t;/*  * Note: ds_rrlist.c is the only entity that sees these monsters, * so it is responsible for both allocation and deallocation. *//* ds_rrlist_reqtab_elt_t *rre, long rqid, ds_rrlist_t *lst */#define DS_RRLIST_REQTAB_ELT_CREATE(rre,rqid,lst)  \do {                                               \    ALLOC(rre,ds_rrlist_reqtab_elt_t);             \    (rre)->magic = ds_rrlist_reqtab_elt_magic;     \    (rre)->reqid = rqid;                           \    (rre)->list = lst;                             \} while (0)#define DS_RRLIST_REQTAB_ELT_DESTROY(rre)     \do {                                          \    CODA_ASSERT(DS_RRLIST_REQTAB_ELT_VALID(rre));  \    (rre)->magic = 0;                         \    (rre)->reqid = 0;                         \    (rre)->list = NULL;                       \    FREE(rre);                                \} while (0)#endif _DS_RRLIST_PRIVATE_H_

⌨️ 快捷键说明

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