00001
00006 #ifndef BLOCKPOOL_H
00007 #define BLOCKPOOL_H
00008 #include"growingpersistentmseg.h"
00009 #include"rpointer.h"
00010 #include"common_page.h"
00011
00016 struct ManagementInfo
00017 {
00018 char info[80];
00019 off_t freepagelist;
00020 off_t unused_pages;
00021 };
00022
00026 class Blockpool
00027 {
00028 protected:
00029 RAMS::PersistentGrowingMseg gm;
00030 ManagementInfo *info;
00031 int as_;
00032 public:
00033 Blockpool():as_(256) { info=NULL; }
00034 Blockpool(const char *filename,int as=256):as_(as)
00035 {
00036 RAMS::RPointer_s sud;
00037 init(filename,sud);
00038 }
00042 int init(const char *filename,RAMS::RPointer_s &sud);
00043 void free(RAMS::RPointer<CommonPage,PAGESIZE>& page);
00044
00045 void getpage(RAMS::RPointer<CommonPage,PAGESIZE>& ret);
00046 RAMS::Mseg *getseg() { return &gm; }
00047 };
00048 #endif
00049
00050
00051
00052
00053
00054
00055
00056
00057