Removed pbl header; fixed makefile bugs and the compilation warnings
they obscured.
This commit is contained in:
parent
6485a4aae9
commit
0c6c0ec50b
7 changed files with 30 additions and 551 deletions
|
@ -1,6 +1,6 @@
|
||||||
EXTRA_DIST = reconf
|
EXTRA_DIST = reconf
|
||||||
SUBDIRS = src test utilities benchmarks
|
SUBDIRS = src test utilities benchmarks
|
||||||
export GLOBAL_CFLAGS = -g -Wall -pedantic -std=gnu99 -Winline
|
export GLOBAL_CFLAGS = -g -Wall -pedantic -std=gnu99 -Winline -DPBL_COMPAT
|
||||||
## GOAL: Make these not warn!
|
## GOAL: Make these not warn!
|
||||||
#-Wextra -Wno-unused-parameter
|
#-Wextra -Wno-unused-parameter
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,6 @@ LDADD=$(top_builddir)/src/2pc/lib2pc.a $(top_builddir)/src/libdfa/libdfa.a \
|
||||||
bin_PROGRAMS=lhtableThreaded naiveHash logicalHash readLogicalHash naiveMultiThreaded logicalMultThreaded rawSet \
|
bin_PROGRAMS=lhtableThreaded naiveHash logicalHash readLogicalHash naiveMultiThreaded logicalMultThreaded rawSet \
|
||||||
arrayListSet logicalMultiReaders linearHashNTA linkedListNTA pageOrientedListNTA \
|
arrayListSet logicalMultiReaders linearHashNTA linkedListNTA pageOrientedListNTA \
|
||||||
linearHashNTAThreaded linearHashNTAMultiReader linearHashNTAWriteRequests transitiveClosure zeroCopy
|
linearHashNTAThreaded linearHashNTAMultiReader linearHashNTAWriteRequests transitiveClosure zeroCopy
|
||||||
AM_CFLAGS= -g -Wall -pedantic -std=gnu99
|
AM_CFLAGS=${GLOBAL_CFLAGS}
|
||||||
|
|
||||||
SUBDIRS=berkeleyDB
|
SUBDIRS=berkeleyDB
|
||||||
|
|
567
pbl/pbl.h
567
pbl/pbl.h
|
@ -1,558 +1,35 @@
|
||||||
#ifndef _PBL_H_
|
|
||||||
#define _PBL_H_
|
|
||||||
/*
|
|
||||||
pbl.h - external include file of library
|
|
||||||
|
|
||||||
Copyright (C) 2002 Peter Graf
|
|
||||||
|
|
||||||
This file is part of PBL - The Program Base Library.
|
|
||||||
PBL is free software.
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
For more information on the Program Base Library or Peter Graf,
|
|
||||||
please see: http://mission.base.com/.
|
|
||||||
|
|
||||||
$Log$
|
|
||||||
Revision 1.3 2006/04/11 02:20:21 sears
|
|
||||||
removed memcpy() calls from inMemoryLog; added "const" qualifier to many LogEntry pointers.
|
|
||||||
|
|
||||||
Revision 1.2 2005/03/02 05:46:29 sears
|
|
||||||
Compiles on FreeBSD!
|
|
||||||
|
|
||||||
Revision 1.1.1.1 2004/06/24 21:11:33 sears
|
|
||||||
Need to send laptop in for warranty service, so it's time to put this code into CVS. :)
|
|
||||||
|
|
||||||
Vs. the paper version of LLADD, this version has a re-written logger + recovery system. It also includes unit tests and API documentation.
|
|
||||||
|
|
||||||
Revision 1.4 2004/06/09 21:27:40 sears
|
|
||||||
Final CVS checkin before major refactoring.
|
|
||||||
|
|
||||||
Revision 1.3 2003/12/11 10:48:16 jim
|
|
||||||
compiles, not link. added quasi-pincount, shadow pages
|
|
||||||
|
|
||||||
Revision 1.2 2003/12/11 09:21:20 jim
|
|
||||||
update includes
|
|
||||||
|
|
||||||
Revision 1.1 2003/12/11 09:10:48 jim
|
|
||||||
pbl
|
|
||||||
|
|
||||||
Revision 1.2 2002/09/12 20:47:18 peter
|
|
||||||
added the isam file handling to the library
|
|
||||||
|
|
||||||
Revision 1.1 2002/09/05 13:44:12 peter
|
|
||||||
Initial revision
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This file defines pbl's hashtable interface. It is only included
|
||||||
|
in order to ease the transition away from PBL, and to remove all
|
||||||
|
of PBL from the source tree.
|
||||||
|
|
||||||
|
@see lhtable.h which replaces this interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifndef PBL_H
|
||||||
extern "C" {
|
#define PBL_H
|
||||||
#endif
|
#ifdef PBL_COMPAT
|
||||||
|
|
||||||
/*
|
|
||||||
* make sure "strings <exe> | grep Id | sort -u" shows the source file versions
|
|
||||||
*/
|
|
||||||
static char* _PBL_H_id = "$Id$";
|
|
||||||
static int _PBL_H_fct() { return( _PBL_H_id ? 0 : _PBL_H_fct() ); }
|
|
||||||
|
|
||||||
#include <dirent.h>
|
|
||||||
// for size_t
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
/*****************************************************************************/
|
|
||||||
/* #defines */
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
struct pblHashTable_t;
|
||||||
|
typedef struct pblHashTable_t pblHashTable_t;
|
||||||
|
|
||||||
/*
|
pblHashTable_t * pblHtCreate( );
|
||||||
* some functions have strange names on windows
|
|
||||||
*/
|
int pblHtDelete ( pblHashTable_t * h );
|
||||||
#define strcasecmp _stricmp
|
int pblHtInsert ( pblHashTable_t * h, const void * key, size_t keylen,
|
||||||
#define strncasecmp _strnicmp
|
void * dataptr);
|
||||||
#define snprintf _snprintf
|
int pblHtRemove ( pblHashTable_t * h, const void * key, size_t keylen );
|
||||||
|
void * pblHtLookup ( pblHashTable_t * h, const void * key, size_t keylen );
|
||||||
|
void * pblHtFirst ( pblHashTable_t * h );
|
||||||
|
void * pblHtNext ( pblHashTable_t * h );
|
||||||
|
void * pblHtCurrent ( pblHashTable_t * h );
|
||||||
|
void * pblHtCurrentKey ( pblHashTable_t * h );
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#error pbl.h was included, but PBL_COMPAT is not defined!
|
||||||
#ifndef O_BINARY
|
|
||||||
#define O_BINARY 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PBL_ERRSTR_LEN 2048
|
|
||||||
|
|
||||||
/** @name B: Files
|
|
||||||
* list of files of component
|
|
||||||
* <P>
|
|
||||||
* <B>FILES</B>
|
|
||||||
* <UL>
|
|
||||||
* <LI> <a href="../pbl.h">pbl.h</a> - the include file of the library
|
|
||||||
* <LI> <a href="../pbl.c">pbl.c</a> - source for the base functions
|
|
||||||
* <LI> <a href="../pblhash.c">pblhash.c</a> - source file for the
|
|
||||||
* hash functions
|
|
||||||
* <LI> <a href="../pblhttst.c">pblhttst.c</a> - source file for the
|
|
||||||
* hash function test frame
|
|
||||||
* <LI> <a href="../pblkf.c">pblkf.c</a> - source file for the key
|
|
||||||
* file functions
|
|
||||||
* <LI> <a href="../pblkftst.c">pblkftst.c</a> - source file for the
|
|
||||||
* key file handling test frame
|
|
||||||
* <LI> <a href="../pblisam.c">pblisam.c</a> - source file for the isam
|
|
||||||
* file functions
|
|
||||||
* <LI> <a href="../pbliftst.c">pbliftst.c</a> - source file for the
|
|
||||||
* isam file handling test frame
|
|
||||||
* <LI> <a href="../makefile">makefile</a> - a Unix makefile for the
|
|
||||||
* component
|
|
||||||
* <LI> <a href="../pblhttstdeb.dsp">pblhttstdeb.dsp</a> - a Microsoft Visual
|
|
||||||
* Studio 6.0 project file for
|
|
||||||
* hash table debug
|
|
||||||
* <LI> <a href="../pblkftstdeb.dsp">pblkftstdeb.dsp</a> - a Microsoft
|
|
||||||
* Visual Studio 6.0 project file
|
|
||||||
* for key file debug
|
|
||||||
* <LI> <a href="../pbliftstdeb.dsp">pbliftstdeb.dsp</a> - a Microsoft Visual
|
|
||||||
* Studio 6.0 project file for
|
|
||||||
* isam file debug
|
|
||||||
* <LI> <a href="../ISAM0001.LOG">ISAM0001.LOG</a> - a test case for the
|
|
||||||
* isam file handling test frame
|
|
||||||
* <LI> <a href="../pbl.dxx">pbl.dxx</a> - the source for this document
|
|
||||||
* </UL>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define PBL_FILE_LIST
|
|
||||||
|
|
||||||
/** @name C: Error codes
|
|
||||||
* error codes of the pbl library
|
|
||||||
*
|
|
||||||
* @field PBL_ERROR_OUT_OF_MEMORY out of memory
|
|
||||||
* @field PBL_ERROR_EXISTS record already exists
|
|
||||||
* @field PBL_ERROR_NOT_FOUND record not found
|
|
||||||
* @field PBL_ERROR_BAD_FILE file structure damaged
|
|
||||||
* @field PBL_ERROR_PARAM_MODE parameter mode is not valid
|
|
||||||
* @field PBL_ERROR_PARAM_KEY parameter key is not valid
|
|
||||||
* @field PBL_ERROR_PARAM_KEYLEN parameter keylen is not valid
|
|
||||||
* @field PBL_ERROR_PARAM_DATA parameter data is not valid
|
|
||||||
* @field PBL_ERROR_PARAM_DATALEN parameter datalen is not valid
|
|
||||||
* @field PBL_ERROR_PARAM_INDEX parameter index is not valid
|
|
||||||
* @field PBL_ERROR_CREATE file system create error, see errno
|
|
||||||
* @field PBL_ERROR_OPEN file system open error, see errno
|
|
||||||
* @field PBL_ERROR_SEEK file system seek error, see errno
|
|
||||||
* @field PBL_ERROR_READ file system read error, see errno
|
|
||||||
* @field PBL_ERROR_WRITE file system write error, see errno
|
|
||||||
* @field PBL_ERROR_PROGRAM an internal error in the code, debug it!!
|
|
||||||
* @field PBL_ERROR_NOFIT internal error forcing a block split
|
|
||||||
* @field PBL_ERROR_NOT_ALLOWED file not open for update, operation not allowed
|
|
||||||
* @field PBL_ERROR_POSITION current record is not positioned
|
|
||||||
*/
|
|
||||||
#define PBL_ERROR_BASE 1000
|
|
||||||
|
|
||||||
#define PBL_ERROR_OUT_OF_MEMORY ( PBL_ERROR_BASE + 1 )
|
|
||||||
#define PBL_ERROR_EXISTS ( PBL_ERROR_BASE + 2 )
|
|
||||||
#define PBL_ERROR_NOT_FOUND ( PBL_ERROR_BASE + 3 )
|
|
||||||
#define PBL_ERROR_BAD_FILE ( PBL_ERROR_BASE + 4 )
|
|
||||||
#define PBL_ERROR_PARAM_MODE ( PBL_ERROR_BASE + 5 )
|
|
||||||
#define PBL_ERROR_PARAM_KEY ( PBL_ERROR_BASE + 6 )
|
|
||||||
#define PBL_ERROR_PARAM_KEYLEN ( PBL_ERROR_BASE + 7 )
|
|
||||||
#define PBL_ERROR_PARAM_DATA ( PBL_ERROR_BASE + 8 )
|
|
||||||
#define PBL_ERROR_PARAM_DATALEN ( PBL_ERROR_BASE + 9 )
|
|
||||||
#define PBL_ERROR_PARAM_INDEX ( PBL_ERROR_BASE + 10 )
|
|
||||||
|
|
||||||
#define PBL_ERROR_CREATE ( PBL_ERROR_BASE + 20 )
|
|
||||||
#define PBL_ERROR_OPEN ( PBL_ERROR_BASE + 21 )
|
|
||||||
#define PBL_ERROR_SEEK ( PBL_ERROR_BASE + 22 )
|
|
||||||
#define PBL_ERROR_READ ( PBL_ERROR_BASE + 23 )
|
|
||||||
#define PBL_ERROR_WRITE ( PBL_ERROR_BASE + 24 )
|
|
||||||
|
|
||||||
#define PBL_ERROR_PROGRAM ( PBL_ERROR_BASE + 30 )
|
|
||||||
#define PBL_ERROR_NOFIT ( PBL_ERROR_BASE + 31 )
|
|
||||||
|
|
||||||
#define PBL_ERROR_NOT_ALLOWED ( PBL_ERROR_BASE + 40 )
|
|
||||||
#define PBL_ERROR_POSITION ( PBL_ERROR_BASE + 41 )
|
|
||||||
|
|
||||||
/** @name D: Definitions for Key File Parameters
|
|
||||||
* DEFINES FOR PARAMETER <B> mode </B> OF \Ref{pblKfFind}()
|
|
||||||
* @field PBLEQ any record that is equal
|
|
||||||
* @field PBLFI first record that is equal
|
|
||||||
* @field PBLLA last record that is equal
|
|
||||||
* @field PBLGE last equal or first that is greater
|
|
||||||
* @field PBLGT first that is greater
|
|
||||||
* @field PBLLE first equal or last that is smaller
|
|
||||||
* @field PBLLT last that is smaller
|
|
||||||
*/
|
|
||||||
#define PBLEQ 1
|
|
||||||
#define PBLFI 2
|
|
||||||
#define PBLLA 3
|
|
||||||
#define PBLGE 4
|
|
||||||
#define PBLGT 5
|
|
||||||
#define PBLLE 6
|
|
||||||
#define PBLLT 7
|
|
||||||
|
|
||||||
/** @name E: Definitions for ISAM Parameters
|
|
||||||
* DEFINES FOR PARAMETER <B> which </B> OF \Ref{pblIsamGet}()
|
|
||||||
* @field PBLTHIS get key and keylen of current record
|
|
||||||
* @field PBLNEXT get key and keylen of next record
|
|
||||||
* @field PBLPREV get key and keylen of previous record
|
|
||||||
* @field PBLFIRST get key and keylen of first record
|
|
||||||
* @field PBLLAST get key and keylen of last record
|
|
||||||
*/
|
|
||||||
#define PBLTHIS 1
|
|
||||||
#define PBLNEXT 2
|
|
||||||
#define PBLPREV 3
|
|
||||||
#define PBLFIRST 4
|
|
||||||
#define PBLLAST 5
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the maximum length of a key of the key file component,
|
|
||||||
* @doc maximum length of a key, 255 for now
|
|
||||||
*/
|
|
||||||
#define PBLKEYLENGTH 255
|
|
||||||
|
|
||||||
/**
|
|
||||||
* maximum data length of data being stored on index blocks of key files,
|
|
||||||
* @doc maximum length of data stored with an item on the level 0 block, 1024
|
|
||||||
* @doc data that is longer is stored on data blocks.
|
|
||||||
*/
|
|
||||||
#define PBLDATALENGTH 1024
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* macros */
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The PBL_MEMTRACE define can be used for debugging the library,
|
|
||||||
* if defined the library will log a line for all memory chunks
|
|
||||||
* that are allocated for more than 3 minutes into the file ./pblmemtrace.log
|
|
||||||
*
|
|
||||||
* This can be used to detect heap memory lost by the code.
|
|
||||||
* See also function pbl_memtrace_out in pbl.c
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* #define PBL_MEMTRACE */
|
|
||||||
#ifdef PBL_MEMTRACE
|
|
||||||
|
|
||||||
extern void pbl_memtrace_delete( void * data );
|
|
||||||
extern void pbl_memtrace_out( int checktime );
|
|
||||||
|
|
||||||
#define PBL_FREE( ptr ) if( ptr ){ pbl_memtrace_delete( ptr );\
|
|
||||||
free( ptr ); ptr = 0; }
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make free save against NULL pointers,
|
|
||||||
* @doc also the parameter ptr is set to NULL
|
|
||||||
*/
|
|
||||||
#define PBL_FREE( ptr ) if( ptr ){ free( ptr ); ptr = 0; }
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macros for linear list handling,
|
|
||||||
*/
|
|
||||||
#define PBL_LIST_( Parameters )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* push an element to the beginning of a linear list
|
|
||||||
*/
|
|
||||||
#define PBL_LIST_PUSH( HEAD, TAIL, ITEM, NEXT, PREV )\
|
|
||||||
{\
|
|
||||||
(ITEM)->PREV = 0;\
|
|
||||||
if(( (ITEM)->NEXT = (HEAD) ))\
|
|
||||||
{ (ITEM)->NEXT->PREV = (ITEM); }\
|
|
||||||
else\
|
|
||||||
{ (TAIL) = (ITEM); }\
|
|
||||||
(HEAD) = (ITEM);\
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* append an element to the end of a linear list
|
|
||||||
*/
|
|
||||||
#define PBL_LIST_APPEND( HEAD, TAIL, ITEM, NEXT, PREV )\
|
|
||||||
PBL_LIST_PUSH( TAIL, HEAD, ITEM, PREV, NEXT )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* remove an element from a linear list
|
|
||||||
*/
|
|
||||||
#define PBL_LIST_UNLINK( HEAD, TAIL, ITEM, NEXT, PREV )\
|
|
||||||
{\
|
|
||||||
if( (ITEM)->NEXT )\
|
|
||||||
{ (ITEM)->NEXT->PREV = (ITEM)->PREV; }\
|
|
||||||
else\
|
|
||||||
{ (TAIL) = (ITEM)->PREV; }\
|
|
||||||
if( (ITEM)->PREV )\
|
|
||||||
{ (ITEM)->PREV->NEXT = (ITEM)->NEXT; }\
|
|
||||||
else\
|
|
||||||
{ (HEAD) = (ITEM)->NEXT; }\
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SOME MACROS FOR KEY FILE READ FUNCTIONS
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* set the current record to the first record of the file
|
|
||||||
*/
|
|
||||||
#define pblKfFirst( KF, K, L ) pblKfGetAbs( KF, 0, K, L )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set the current record to the last record of the file
|
|
||||||
*/
|
|
||||||
#define pblKfLast( KF, K, L ) pblKfGetAbs( KF, -1, K, L )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set the current record to the next record of the file
|
|
||||||
*/
|
|
||||||
#define pblKfNext( KF, K, L ) pblKfGetRel( KF, 1, K, L )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set the current record to the previous record of the file
|
|
||||||
*/
|
|
||||||
#define pblKfPrev( KF, K, L ) pblKfGetRel( KF, -1, K, L )
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return the datalen of the current record
|
|
||||||
*/
|
|
||||||
#define pblKfThis( KF, K, L ) pblKfGetRel( KF, 0, K, L )
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* typedefs */
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
struct pblHashTable_s
|
|
||||||
{
|
|
||||||
char * magic;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the hash table type the pblHt* functions are dealing with,
|
|
||||||
* @doc the details of the structure are hidden from the user
|
|
||||||
*/
|
|
||||||
typedef struct pblHashTable_s pblHashTable_t;
|
|
||||||
|
|
||||||
struct pblKeyFile_s
|
|
||||||
{
|
|
||||||
char * magic;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the key file type the pblKf* functions are dealing with,
|
|
||||||
* @doc the details of the structure are hidden from the user
|
|
||||||
*/
|
|
||||||
typedef struct pblKeyFile_s pblKeyFile_t;
|
|
||||||
|
|
||||||
struct pblIsamFile_s
|
|
||||||
{
|
|
||||||
char * magic;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the ISAM file type the pblIsam* functions are dealing with,
|
|
||||||
* @doc the details of the structure are hidden from the user
|
|
||||||
*/
|
|
||||||
typedef struct pblIsamFile_s pblIsamFile_t;
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* variable declarations */
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**
|
|
||||||
* integer value used for returning error codes
|
|
||||||
*/
|
|
||||||
extern int pbl_errno;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* character buffer used for returning error strings
|
|
||||||
*/
|
|
||||||
extern char * pbl_errstr;
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* function declarations */
|
|
||||||
/*****************************************************************************/
|
|
||||||
extern void * pbl_malloc( char * tag, size_t size );
|
|
||||||
extern void * pbl_malloc0( char * tag, size_t size );
|
|
||||||
extern void * pbl_memdup( char * tag, void * data, size_t size );
|
|
||||||
extern void * pbl_mem2dup( char * tag, void * mem1, size_t len1,
|
|
||||||
void * mem2, size_t len2 );
|
|
||||||
extern int pbl_memcmplen( void * left, size_t llen,
|
|
||||||
void * right, size_t rlen );
|
|
||||||
extern int pbl_memcmp( void * left, size_t llen, void * right, size_t rlen );
|
|
||||||
extern size_t pbl_memlcpy( void * to, size_t tolen, void * from, size_t n );
|
|
||||||
|
|
||||||
extern void pbl_ShortToBuf( unsigned char * buf, int s );
|
|
||||||
extern int pbl_BufToShort( unsigned char * buf );
|
|
||||||
extern void pbl_LongToBuf( unsigned char * buf, long l );
|
|
||||||
extern long pbl_BufToLong( unsigned char * buf );
|
|
||||||
extern int pbl_LongToVarBuf( unsigned char * buffer, unsigned long value );
|
|
||||||
extern int pbl_VarBufToLong( unsigned char * buffer, long * value );
|
|
||||||
extern int pbl_LongSize( unsigned long value );
|
|
||||||
extern int pbl_VarBufSize( unsigned char * buffer );
|
|
||||||
|
|
||||||
extern pblHashTable_t * pblHtCreate( );
|
|
||||||
extern int pblHtInsert ( pblHashTable_t * h, const void * key, size_t keylen,
|
|
||||||
void * dataptr);
|
|
||||||
extern void * pblHtLookup ( pblHashTable_t * h, const void * key, size_t keylen );
|
|
||||||
extern void * pblHtFirst ( pblHashTable_t * h );
|
|
||||||
extern void * pblHtNext ( pblHashTable_t * h );
|
|
||||||
extern void * pblHtCurrent ( pblHashTable_t * h );
|
|
||||||
extern void * pblHtCurrentKey ( pblHashTable_t * h );
|
|
||||||
extern int pblHtRemove ( pblHashTable_t * h, const void * key, size_t keylen );
|
|
||||||
extern int pblHtDelete ( pblHashTable_t * h );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FUNCTIONS ON KEY FILES
|
|
||||||
*/
|
|
||||||
int pblKfInit ( int nblocks );
|
|
||||||
extern pblKeyFile_t * pblKfCreate( char * path, void * filesettag );
|
|
||||||
extern pblKeyFile_t * pblKfOpen ( char * path, int update, void * filesettag );
|
|
||||||
extern int pblKfClose ( pblKeyFile_t * k );
|
|
||||||
extern int pblKfFlush ( pblKeyFile_t * k );
|
|
||||||
extern int pblKfStartTransaction( pblKeyFile_t * k );
|
|
||||||
extern int pblKfCommit( pblKeyFile_t * k, int rollback );
|
|
||||||
extern int pblKfSavePosition( pblKeyFile_t * k );
|
|
||||||
extern int pblKfRestorePosition( pblKeyFile_t * k );
|
|
||||||
|
|
||||||
extern void pblKfSetCompareFunction(
|
|
||||||
pblKeyFile_t * k, /** key file to set compare function for */
|
|
||||||
int ( *keycompare ) /** compare function to set */
|
|
||||||
(
|
|
||||||
void* left, /** "left" buffer for compare */ size_t llen, /** length of that buffer */ void* right, /** "right" buffer for compare */ size_t rlen /** length of that buffer */
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* WRITE FUNCTIONS ON RECORDS, DELETE AND UPDATE WORK ON CURRENT RECORD
|
|
||||||
*/
|
|
||||||
extern int pblKfInsert(
|
|
||||||
pblKeyFile_t * k,
|
|
||||||
unsigned char * key,
|
|
||||||
int keylen,
|
|
||||||
unsigned char * data,
|
|
||||||
long datalen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblKfDelete( pblKeyFile_t * k );
|
|
||||||
|
|
||||||
extern int pblKfUpdate(
|
|
||||||
pblKeyFile_t * k,
|
|
||||||
unsigned char * data,
|
|
||||||
long datalen
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* KEY FILE READ FUNCTIONS ON RECORDS
|
|
||||||
*/
|
|
||||||
extern long pblKfFind(
|
|
||||||
pblKeyFile_t * k,
|
|
||||||
int mode,
|
|
||||||
unsigned char * skey,
|
|
||||||
int skeylen,
|
|
||||||
unsigned char * okey,
|
|
||||||
int * okeylen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern long pblKfRead(
|
|
||||||
pblKeyFile_t * k,
|
|
||||||
unsigned char * data,
|
|
||||||
long datalen
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FUNCTIONS ACTUALLY ONLY TO BE USED THROUGH THE MAKROS DEFINED BELOW
|
|
||||||
*
|
|
||||||
* however, the functions work, but they are not very fast
|
|
||||||
*
|
|
||||||
* pblKfGetRel - positions relative to the current record to any other
|
|
||||||
* record of the file, interface is like pblKfNext
|
|
||||||
*
|
|
||||||
* pblKfGetAbs - positions absolute to the absindex 'th record of the file,
|
|
||||||
* -1L means last, interface is like pblKfFirst
|
|
||||||
*/
|
|
||||||
extern long pblKfGetRel( pblKeyFile_t * k, long relindex,
|
|
||||||
char *okey, int *okeylen);
|
|
||||||
extern long pblKfGetAbs( pblKeyFile_t * k, long absindex,
|
|
||||||
char *okey, int *okeylen);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FUNCTIONS ON ISAM FILES
|
|
||||||
*/
|
|
||||||
extern int pblIsamClose( pblIsamFile_t * isamfile );
|
|
||||||
extern int pblIsamFlush( pblIsamFile_t * isamfile );
|
|
||||||
extern int pblIsamDelete( pblIsamFile_t * isamfile );
|
|
||||||
|
|
||||||
extern pblIsamFile_t * pblIsamOpen(
|
|
||||||
char * path,
|
|
||||||
int update,
|
|
||||||
void * filesettag,
|
|
||||||
int nkeys,
|
|
||||||
char ** keyfilenames,
|
|
||||||
int * keydup
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamInsert(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
unsigned char * allkeys,
|
|
||||||
int allkeyslen,
|
|
||||||
unsigned char * data,
|
|
||||||
long datalen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamFind(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
int mode,
|
|
||||||
int index,
|
|
||||||
unsigned char * skey,
|
|
||||||
int skeylen,
|
|
||||||
unsigned char * okey
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamGet(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
int which,
|
|
||||||
int index,
|
|
||||||
unsigned char * okey
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamReadKey(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
int index,
|
|
||||||
unsigned char * okey
|
|
||||||
);
|
|
||||||
|
|
||||||
extern long pblIsamReadDatalen( pblIsamFile_t * isamfile );
|
|
||||||
|
|
||||||
extern long pblIsamReadData(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
unsigned char * buffer,
|
|
||||||
long bufferlen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern long pblIsamUpdateData(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
unsigned char * data,
|
|
||||||
long datalen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamUpdateKey(
|
|
||||||
pblIsamFile_t * isamfile,
|
|
||||||
int index,
|
|
||||||
unsigned char * ukey,
|
|
||||||
int ukeylen
|
|
||||||
);
|
|
||||||
|
|
||||||
extern int pblIsamStartTransaction( int nfiles, pblIsamFile_t ** isamfiles );
|
|
||||||
extern int pblIsamCommit( int nfiles, pblIsamFile_t ** isamfiles, int rollback);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
LDADD= $(top_builddir)/src/libdfa/libdfa.a $(top_builddir)/src/lladd/liblladd.a $(top_builddir)/src/libdfa/librw.a -lconfuse
|
LDADD= $(top_builddir)/src/libdfa/libdfa.a $(top_builddir)/src/lladd/liblladd.a $(top_builddir)/src/libdfa/librw.a -lconfuse
|
||||||
bin_PROGRAMS=ping_pong_dfa fork_bomb star
|
bin_PROGRAMS=ping_pong_dfa fork_bomb star
|
||||||
AM_FLAGS=${GLOBAL_CFLAGS}
|
AM_CFLAGS=${GLOBAL_CFLAGS}
|
||||||
if HAVE_LIBCHECK
|
if HAVE_LIBCHECK
|
||||||
TESTS = check_networksetup ping_pong_dfa
|
TESTS = check_networksetup ping_pong_dfa
|
||||||
else
|
else
|
||||||
|
|
|
@ -49,6 +49,7 @@ terms specified in this license.
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <libdfa/networksetup.h>
|
#include <libdfa/networksetup.h>
|
||||||
#include <libdfa/messages.h>
|
#include <libdfa/messages.h>
|
||||||
|
#include <string.h>
|
||||||
#define LOG_NAME "check_networksetup.log"
|
#define LOG_NAME "check_networksetup.log"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -169,7 +169,7 @@ END_TEST
|
||||||
|
|
||||||
state_name recv_ping(void * dfaSet, StateMachine * stateMachine, Message * m, char * from) {
|
state_name recv_ping(void * dfaSet, StateMachine * stateMachine, Message * m, char * from) {
|
||||||
if((global_kill--) <= 0) {
|
if((global_kill--) <= 0) {
|
||||||
printf("Done: %d\n", stateMachine->machine_id);
|
printf("Done: %ld\n", stateMachine->machine_id);
|
||||||
// while(1) { int i; i++; }
|
// while(1) { int i; i++; }
|
||||||
exit(0);
|
exit(0);
|
||||||
} else if(stateMachine != NULL) {
|
} else if(stateMachine != NULL) {
|
||||||
|
@ -183,7 +183,7 @@ state_name recv_ping(void * dfaSet, StateMachine * stateMachine, Message * m, ch
|
||||||
|
|
||||||
state_name recv_pong(void * dfaSet, StateMachine * stateMachine, Message * m, char * from) {
|
state_name recv_pong(void * dfaSet, StateMachine * stateMachine, Message * m, char * from) {
|
||||||
if((global_kill--) <= 0) {
|
if((global_kill--) <= 0) {
|
||||||
printf("Done: %d\n", stateMachine->machine_id);
|
printf("Done: %ld\n", stateMachine->machine_id);
|
||||||
exit(0);
|
exit(0);
|
||||||
} else if(stateMachine != NULL) {
|
} else if(stateMachine != NULL) {
|
||||||
DEBUG("%ld(%d): Got a pong from %s Machine %ld\n", stateMachine->machine_id, stateMachine->current_state, from, m->from_machine_id);
|
DEBUG("%ld(%d): Got a pong from %s Machine %ld\n", stateMachine->machine_id, stateMachine->current_state, from, m->from_machine_id);
|
||||||
|
|
|
@ -10,5 +10,6 @@ endif
|
||||||
noinst_PROGRAMS = $(TESTS)
|
noinst_PROGRAMS = $(TESTS)
|
||||||
LDADD = $(top_builddir)/src/lladd/liblladd.a $(top_builddir)/src/libdfa/librw.a #-lefence
|
LDADD = $(top_builddir)/src/lladd/liblladd.a $(top_builddir)/src/libdfa/librw.a #-lefence
|
||||||
CLEANFILES = check_lht.log check_logEntry.log storefile.txt logfile.txt blob0_file.txt blob1_file.txt check_blobRecovery.log check_logWriter.log check_operations.log check_recovery.log check_transactional2.log check_page.log check_bufferManager.log check_indirect.log check_bufferMananger.log check_lladdhash.log check_pageOperations.log check_linearhash.log check_linkedListNTA.log check_linearHashNTA.log check_pageOrientedListNTA.log check_lockManager.log check_compensations.log check_errorhandling.log check_header.logg check_iterator.log check_linearHash.log check_ringbuffer.log check_bTree.log
|
CLEANFILES = check_lht.log check_logEntry.log storefile.txt logfile.txt blob0_file.txt blob1_file.txt check_blobRecovery.log check_logWriter.log check_operations.log check_recovery.log check_transactional2.log check_page.log check_bufferManager.log check_indirect.log check_bufferMananger.log check_lladdhash.log check_pageOperations.log check_linearhash.log check_linkedListNTA.log check_linearHashNTA.log check_pageOrientedListNTA.log check_lockManager.log check_compensations.log check_errorhandling.log check_header.logg check_iterator.log check_linearHash.log check_ringbuffer.log check_bTree.log
|
||||||
AM_CFLAGS= -g -Wall -pedantic -std=gnu99 -fno-strict-aliasing
|
AM_CFLAGS=${GLOBAL_CFLAGS}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue