00001 /**** 00002 Persistent Transactional Memory v0.3 00003 Copyright (C) 2010 Werner Van Belle 00004 http://active.yellowcouch.org/ 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 ****/ 00020 #ifndef __loaded__txmem_h__ 00021 #define __loaded__txmem_h__ 00022 using namespace std; 00023 #line 1 "txmem.h++" 00024 00029 struct TxMemory 00030 { 00031 int memory_size; 00037 int fd; 00041 char* M; 00047 TxMemory(const char* filename, unsigned long size); 00051 unsigned long long commit(); 00056 void abort(); 00057 private: 00062 int mapfd; 00067 int pageflags; 00072 const char* journalfn; 00078 const char* journaltmp; 00083 unsigned long long pagesize; 00087 int pagecount; 00088 void reopen_map(); 00089 }; 00090 #endif // __loaded__txmem_h__