Cleanup #1489: Delete GPU dummy mempool
[charm.git] / src / util / pup_paged.h
blobae1886c15ed11915387e712edfe28ee6f3ea87d4
1 #ifndef _PUP_PAGED_H_
2 #define _PUP_PAGED_H_
3 #define PUP_BLOCK 512
4 #include <stdio.h>
5 #include <string.h>
6 #include "pup.h"
7 typedef struct _list{
8 int n;
9 struct _list *next;
10 } pup_list;
11 // each pageentry is indexed by the pointer of the object
12 typedef struct _pageentry{
13 void *ptr;
14 pup_list *blklist;
15 struct _pageentry *next;
16 } pup_pageentry;
18 typedef struct {
19 pup_list *freelist;
20 pup_list *tailfreelist; //tail of freelist
21 pup_pageentry *table;
22 pup_pageentry *tailtable; // tail of pagetable entries
23 int maxblk; // the number of blocks that have been written out by now
24 FILE *fp;
25 char *fName;
26 } pup_pagetable;
29 pup_pagetable *getNewPagetable(char *fName);
31 class PUP_pagedDisk : public PUP::er {
32 protected:
33 pup_pagetable *_pagetable;
34 void *handle; // handle of the object to be restored
35 PUP_pagedDisk(unsigned int type,void *objhandle,pup_pagetable *pgtable):PUP::er(type),handle(objhandle),_pagetable(pgtable){
40 class PUP_toPagedDisk : public PUP_pagedDisk{
41 protected:
42 virtual void bytes(void *p,size_t n,size_t itemSize,PUP::dataType t);
43 pup_pageentry *entry;
44 long current_block;
45 long bytes_left;
46 FILE *fp;
47 pup_list *tailblklist;
48 public:
49 PUP_toPagedDisk(void *objhandle,pup_pagetable *pgtable):PUP_pagedDisk(IS_PACKING,objhandle,pgtable){
50 addpageentry();
51 nextblock();
52 fp = _pagetable->fp;
55 void addpageentry();
56 void nextblock();
61 class PUP_fromPagedDisk : public PUP_pagedDisk{
62 protected:
63 virtual void bytes(void *p,size_t n,size_t itemSize,PUP::dataType );
64 pup_pageentry *entry;
65 long current_block;
66 long bytes_unread;
67 FILE *fp;
68 public:
69 PUP_fromPagedDisk(void *objhandle,pup_pagetable *pgtable):PUP_pagedDisk(IS_UNPACKING,objhandle,pgtable){
70 findpageentry();
71 current_block = -1;
72 nextblock();
73 fp = _pagetable->fp;
76 ~PUP_fromPagedDisk(){
77 nextblock();
78 delete entry;
80 void findpageentry();
81 void nextblock();
84 #endif