about summary refs log tree commit diff
path: root/db2/include
diff options
context:
space:
mode:
Diffstat (limited to 'db2/include')
-rw-r--r--db2/include/btree_ext.h2
-rw-r--r--db2/include/common_ext.h2
-rw-r--r--db2/include/db.h.src54
-rw-r--r--db2/include/db_cxx.h4
-rw-r--r--db2/include/db_ext.h1
-rw-r--r--db2/include/db_int.h.src3
-rw-r--r--db2/include/lock.h8
-rw-r--r--db2/include/log.h23
-rw-r--r--db2/include/mp.h23
-rw-r--r--db2/include/mp_ext.h6
-rw-r--r--db2/include/os_ext.h4
-rw-r--r--db2/include/os_func.h6
12 files changed, 91 insertions, 45 deletions
diff --git a/db2/include/btree_ext.h b/db2/include/btree_ext.h
index bbe0d971b2..46f2227bdd 100644
--- a/db2/include/btree_ext.h
+++ b/db2/include/btree_ext.h
@@ -11,7 +11,7 @@ int __bam_cursor __P((DB *, DB_TXN *, DBC **));
 int __bam_c_iclose __P((DB *, DBC *));
 int __bam_get __P((DB *, DB_TXN *, DBT *, DBT *, int));
 int __bam_ovfl_chk __P((DB *, CURSOR *, u_int32_t, int));
-int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, CURSOR *));
+int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, CURSOR *, int));
 void __bam_ca_di __P((DB *, db_pgno_t, u_int32_t, int));
 void __bam_ca_dup __P((DB *,
    db_pgno_t, u_int32_t, u_int32_t, db_pgno_t, u_int32_t));
diff --git a/db2/include/common_ext.h b/db2/include/common_ext.h
index b814582abd..29bc9aa4e2 100644
--- a/db2/include/common_ext.h
+++ b/db2/include/common_ext.h
@@ -23,7 +23,7 @@ int __db_syncchk __P((const DB *, int));
 int __db_ferr __P((const DB_ENV *, const char *, int));
 u_int32_t __db_log2 __P((u_int32_t));
 int __db_rcreate __P((DB_ENV *, APPNAME,
-   const char *, const char *, int, size_t, int *, void *));
+   const char *, const char *, int, size_t, int, int *, void *));
 int __db_rinit __P((DB_ENV *, RLAYOUT *, int, size_t, int));
 int __db_ropen __P((DB_ENV *,
    APPNAME, const char *, const char *, int, int *, void *));
diff --git a/db2/include/db.h.src b/db2/include/db.h.src
index 3cc2bfd4fc..654eb16425 100644
--- a/db2/include/db.h.src
+++ b/db2/include/db.h.src
@@ -4,7 +4,7 @@
  * Copyright (c) 1996, 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)db.h.src	10.91 (Sleepycat) 11/3/97
+ *	@(#)db.h.src	10.97 (Sleepycat) 11/28/97
  */
 
 #ifndef _DB_H_
@@ -73,8 +73,8 @@
 
 #define	DB_VERSION_MAJOR	2
 #define	DB_VERSION_MINOR	3
-#define	DB_VERSION_PATCH	12
-#define	DB_VERSION_STRING	"Sleepycat Software: DB 2.3.12: (11/3/97)"
+#define	DB_VERSION_PATCH	14
+#define	DB_VERSION_STRING	"Sleepycat Software: DB 2.3.14: (11/28/97)"
 
 typedef	u_int32_t	db_pgno_t;	/* Page number type. */
 typedef	u_int16_t	db_indx_t;	/* Page offset type. */
@@ -129,8 +129,10 @@ struct __db_dbt {
 };
 
 /*
- * DB configuration.  There are a set of functions which the application
- * can replace with its own versions.
+ * DB internal configuration.
+ *
+ * There are a set of functions that the application can replace with its
+ * own versions, and some other knobs which can be turned at run-time.
  */
 #define	DB_FUNC_CALLOC	 1		/* ANSI C calloc. */
 #define	DB_FUNC_CLOSE	 2		/* POSIX 1003.1 close. */
@@ -147,11 +149,12 @@ struct __db_dbt {
 #define	DB_FUNC_REALLOC	13		/* ANSI C realloc. */
 #define	DB_FUNC_SEEK	14		/* POSIX 1003.1 lseek. */
 #define	DB_FUNC_SLEEP	15		/* DB: sleep secs/usecs. */
-#define	DB_FUNC_STRDUP	16		/* ANSI C strdup. */
+#define	DB_FUNC_STRDUP	16		/* DB: strdup(3). */
 #define	DB_FUNC_UNLINK	17		/* POSIX 1003.1 unlink. */
 #define	DB_FUNC_UNMAP	18		/* DB: unmap shared memory file. */
 #define	DB_FUNC_WRITE	19		/* POSIX 1003.1 write. */
 #define	DB_FUNC_YIELD	20		/* DB: yield thread to scheduler. */
+#define	DB_TSL_SPINS	21		/* DB: initialize spin count. */
 
 /*
  * Database configuration and initialization.
@@ -211,10 +214,10 @@ struct __db_dbt {
  * locking subsystem.
  */
 #define	DB_LOCK_NORUN		0x0
-#define	DB_LOCK_DEFAULT		0x1
-#define	DB_LOCK_OLDEST		0x2
-#define	DB_LOCK_RANDOM		0x3
-#define	DB_LOCK_YOUNGEST	0x4
+#define	DB_LOCK_DEFAULT		0x1	/* Default policy. */
+#define	DB_LOCK_OLDEST		0x2	/* Abort oldest transaction. */
+#define	DB_LOCK_RANDOM		0x3	/* Abort random transaction. */
+#define	DB_LOCK_YOUNGEST	0x4	/* Abort youngest transaction. */
 
 struct __db_env {
 	int		 db_lorder;	/* Byte order. */
@@ -265,6 +268,10 @@ struct __db_env {
 /*******************************************************
  * Access methods.
  *******************************************************/
+/*
+ * XXX
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
 typedef enum {
 	DB_BTREE=1,			/* B+tree. */
 	DB_HASH,			/* Extended Linear Hashing. */
@@ -347,7 +354,13 @@ struct __db_info {
 #define	DB_SET_RANGE	0x020000	/* c_get() */
 #define	DB_SET_RECNO	0x040000	/* c_get() */
 
-/* DB (user visible) error return codes. */
+/*
+ * DB (user visible) error return codes.
+ *
+ * XXX
+ * Changes to any of the user visible error return codes must be reflected
+ * in java/src/com/sleepycat/db/Db.java.
+ */
 #define	DB_INCOMPLETE		( -1)	/* Sync didn't finish. */
 #define	DB_KEYEMPTY		( -2)	/* The key/data pair was deleted or
 					   was never created by the user. */
@@ -516,6 +529,7 @@ int   db_appinit __P((const char *, char * const *, DB_ENV *, int));
 int   db_appexit __P((DB_ENV *));
 int   db_jump_set __P((void *, int));
 int   db_open __P((const char *, DBTYPE, int, int, DB_ENV *, DB_INFO *, DB **));
+int   db_value_set __P((int, int));
 char *db_version __P((int *, int *, int *));
 #if defined(__cplusplus)
 };
@@ -533,16 +547,26 @@ char *db_version __P((int *, int *, int *));
 /* Flag values for lock_detect(). */
 #define	DB_LOCK_CONFLICT	0x01	/* Run on any conflict. */
 
-/* Request types. */
+/*
+ * Request types.
+ *
+ * XXX
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
 typedef enum {
-	DB_LOCK_DUMP,			/* Display held locks. */
+	DB_LOCK_DUMP=0,			/* Display held locks. */
 	DB_LOCK_GET,			/* Get the lock. */
 	DB_LOCK_PUT,			/* Release the lock. */
 	DB_LOCK_PUT_ALL,		/* Release locker's locks. */
 	DB_LOCK_PUT_OBJ			/* Release locker's locks on obj. */
 } db_lockop_t;
 
-/* Simple R/W lock modes and for multi-granularity intention locking. */
+/*
+ * Simple R/W lock modes and for multi-granularity intention locking.
+ *
+ * XXX
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
 typedef enum {
 	DB_LOCK_NG=0,			/* Not granted. */
 	DB_LOCK_READ,			/* Shared/read. */
@@ -577,7 +601,7 @@ extern const u_int8_t db_riw_conflicts[];
 extern "C" {
 #endif
 int	  lock_close __P((DB_LOCKTAB *));
-int	  lock_detect __P((DB_LOCKTAB *, int, u_int32_t));
+int	  lock_detect __P((DB_LOCKTAB *, int, int));
 int	  lock_get __P((DB_LOCKTAB *,
 	    u_int32_t, int, const DBT *, db_lockmode_t, DB_LOCK *));
 int	  lock_id __P((DB_LOCKTAB *, u_int32_t *));
diff --git a/db2/include/db_cxx.h b/db2/include/db_cxx.h
index 01d1231092..83523c5559 100644
--- a/db2/include/db_cxx.h
+++ b/db2/include/db_cxx.h
@@ -4,7 +4,7 @@
  * Copyright (c) 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)db_cxx.h	10.12 (Sleepycat) 10/25/97
+ *	@(#)db_cxx.h	10.13 (Sleepycat) 11/25/97
  */
 
 #ifndef _DB_CXX_H_
@@ -202,7 +202,7 @@ class _exported DbLockTab
 friend DbEnv;
 public:
     int close();
-    int detect(int atype, u_int32_t flags);
+    int detect(int flags, int atype);
     int get(u_int32_t locker, int flags, const Dbt *obj,
             db_lockmode_t lock_mode, DbLock *lock);
     int id(u_int32_t *idp);
diff --git a/db2/include/db_ext.h b/db2/include/db_ext.h
index f9b3b3a214..15eeaf50a3 100644
--- a/db2/include/db_ext.h
+++ b/db2/include/db_ext.h
@@ -65,6 +65,7 @@ int __db_add_recovery __P((DB_ENV *,
 int __db_txnlist_init __P((void *));
 int __db_txnlist_add __P((void *, u_int32_t));
 int __db_txnlist_find __P((void *, u_int32_t));
+void __db_txnlist_end __P((void *));
 int __db_dput __P((DB *,
    DBT *, PAGE **, db_indx_t *, int (*)(DB *, u_int32_t, PAGE **)));
 int __db_drem __P((DB *,
diff --git a/db2/include/db_int.h.src b/db2/include/db_int.h.src
index abd93a6e8e..03a882fded 100644
--- a/db2/include/db_int.h.src
+++ b/db2/include/db_int.h.src
@@ -4,7 +4,7 @@
  * Copyright (c) 1996, 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)db_int.h.src	10.36 (Sleepycat) 10/31/97
+ *	@(#)db_int.h.src	10.37 (Sleepycat) 11/25/97
  */
 
 #ifndef _DB_INTERNAL_H_
@@ -168,6 +168,7 @@ typedef struct _db_mutex_t {
 	off_t	off;			/* Backing file offset. */
 	u_long	pid;			/* Lock holder: 0 or process pid. */
 #endif
+	u_int32_t spins;		/* Spins before block. */
 	u_int32_t mutex_set_wait;	/* Granted after wait. */
 	u_int32_t mutex_set_nowait;	/* Granted without waiting. */
 } db_mutex_t;
diff --git a/db2/include/lock.h b/db2/include/lock.h
index 8a927f076e..5031b65d06 100644
--- a/db2/include/lock.h
+++ b/db2/include/lock.h
@@ -4,7 +4,7 @@
  * Copyright (c) 1996, 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)lock.h	10.9 (Sleepycat) 10/25/97
+ *	@(#)lock.h	10.10 (Sleepycat) 11/13/97
  */
 
 typedef struct __db_lockobj	DB_LOCKOBJ;
@@ -85,10 +85,14 @@ struct __db_lockobj {
 	} dlinks;
 #define	DB_LOCK_OBJTYPE		1
 #define	DB_LOCK_LOCKER		2
+					/* Allocate room in the object to
+					 * hold typical DB lock structures
+					 * so that we do not have to
+					 * allocate them from shalloc. */
+	u_int8_t objdata[sizeof(struct __db_ilock)];
 	u_int8_t type;			/* Real object or locker id. */
 };
 
-
 #define dd_id	wlinks._dd_id
 #define	waiters	wlinks._waiters
 #define	holders	dlinks._holders
diff --git a/db2/include/log.h b/db2/include/log.h
index a192a38136..405daf4148 100644
--- a/db2/include/log.h
+++ b/db2/include/log.h
@@ -4,7 +4,7 @@
  * Copyright (c) 1996, 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)log.h	10.15 (Sleepycat) 11/2/97
+ *	@(#)log.h	10.16 (Sleepycat) 11/9/97
  */
 
 #ifndef _LOG_H_
@@ -117,20 +117,35 @@ struct __log {
 
 	SH_TAILQ_HEAD(__fq) fq;		/* List of file names. */
 
+	/*
+	 * The lsn LSN is the file offset that we're about to write and which
+	 * we will return to the user.
+	 */
 	DB_LSN	  lsn;			/* LSN at current file offset. */
-	DB_LSN	  c_lsn;		/* LSN of the last checkpoint. */
+
+	/*
+	 * The s_lsn LSN is the last LSN that we know is on disk, not just
+	 * written, by synced.
+	 */
 	DB_LSN	  s_lsn;		/* LSN of the last sync. */
-	DB_LSN	  uw_lsn;		/* LSN of 1st rec not fully on disk. */
 
 	u_int32_t len;			/* Length of the last record. */
 
-	size_t	  b_off;		/* Current offset in the buffer. */
 	u_int32_t w_off;		/* Current write offset in the file. */
 
+	DB_LSN	  c_lsn;		/* LSN of the last checkpoint. */
 	time_t	  chkpt;		/* Time of the last checkpoint. */
 
 	DB_LOG_STAT stat;		/* Log statistics. */
 
+	/*
+	 * The f_lsn LSN is the LSN (returned to the user) that "owns" the
+	 * first byte of the buffer.  If the record associated with the LSN
+	 * spans buffers, it may not reflect the physical file location of
+	 * the first byte of the buffer.
+	 */
+	DB_LSN	  f_lsn;		/* LSN of first byte in the buffer. */
+	size_t	  b_off;		/* Current offset in the buffer. */
 	u_int8_t buf[4 * 1024];		/* Log buffer. */
 };
 
diff --git a/db2/include/mp.h b/db2/include/mp.h
index f68f42b144..f108246f2c 100644
--- a/db2/include/mp.h
+++ b/db2/include/mp.h
@@ -4,7 +4,7 @@
  * Copyright (c) 1996, 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)mp.h	10.19 (Sleepycat) 10/25/97
+ *	@(#)mp.h	10.22 (Sleepycat) 11/28/97
  */
 
 struct __bh;		typedef struct __bh BH;
@@ -23,7 +23,6 @@ struct __mpoolfile;	typedef struct __mpoolfile MPOOLFILE;
 #define	DB_CACHESIZE_MIN	( 20 * 1024)
 
 #define	INVALID		0		/* Invalid shared memory offset. */
-#define	TEMPORARY	"<tmp>"		/* Temporary file name. */
 
 /*
  * There are three ways we do locking in the mpool code:
@@ -122,10 +121,10 @@ struct __db_mpool {
 
 	int	    fd;			/* Underlying mmap'd fd. */
 
-
 #define	MP_ISPRIVATE	0x01		/* Private, so local memory. */
 #define	MP_LOCKHANDLE	0x02		/* Threaded, lock handles and region. */
 #define	MP_LOCKREGION	0x04		/* Concurrent access, lock region. */
+#define	MP_MALLOC	0x08		/* If region in allocated memory. */
 	u_int32_t  flags;
 };
 
@@ -157,7 +156,6 @@ struct __db_mpoolfile {
 /* These fields are not protected. */
 	TAILQ_ENTRY(__db_mpoolfile) q;	/* Linked list of DB_MPOOLFILE's. */
 
-	char	  *path;		/* Initial file path. */
 	DB_MPOOL  *dbmp;		/* Overlying DB_MPOOL. */
 	MPOOLFILE *mfp;			/* Underlying MPOOLFILE. */
 
@@ -165,11 +163,9 @@ struct __db_mpoolfile {
 	size_t	   len;			/* Length of mmap'd region. */
 
 /* These fields need to be protected for multi-threaded support. */
-#define	MP_PATH_ALLOC	0x001		/* Path is allocated memory. */
-#define	MP_PATH_TEMP	0x002		/* Backing file is a temporary. */
-#define	MP_READONLY	0x004		/* File is readonly. */
-#define	MP_UPGRADE	0x008		/* File descriptor is readwrite. */
-#define	MP_UPGRADE_FAIL	0x010		/* Upgrade wasn't possible. */
+#define	MP_READONLY	0x01		/* File is readonly. */
+#define	MP_UPGRADE	0x02		/* File descriptor is readwrite. */
+#define	MP_UPGRADE_FAIL	0x04		/* Upgrade wasn't possible. */
 	u_int32_t  flags;
 };
 
@@ -220,12 +216,9 @@ struct __mpoolfile {
 	u_int32_t ref;			/* Reference count. */
 
 	int	  ftype;		/* File type. */
-	int	  can_mmap;		/* If the file can be mmap'd. */
-
 	int	  lsn_off;		/* Page's LSN offset. */
 
 	size_t	  path_off;		/* File name location. */
-
 	size_t	  fileid_off;		/* File identification location. */
 
 	size_t	  pgcookie_len;		/* Pgin/pgout cookie length. */
@@ -233,6 +226,12 @@ struct __mpoolfile {
 
 	int	  lsn_cnt;		/* Checkpoint buffers left to write. */
 
+	db_pgno_t last_pgno;		/* Last page in the file. */
+
+#define	MP_CAN_MMAP	0x01		/* If the file can be mmap'd. */
+#define	MP_TEMP		0x02		/* Backing file is a temporary. */
+	u_int32_t  flags;
+
 	DB_MPOOL_FSTAT stat;		/* Per-file mpool statistics. */
 };
 
diff --git a/db2/include/mp_ext.h b/db2/include/mp_ext.h
index 49d86ba2e5..b78b3423cd 100644
--- a/db2/include/mp_ext.h
+++ b/db2/include/mp_ext.h
@@ -5,8 +5,10 @@ int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
 int __memp_pgwrite __P((DB_MPOOLFILE *, BH *, int *, int *));
 int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
 void __memp_bhfree __P((DB_MPOOL *, MPOOLFILE *, BH *, int));
-int __memp_fopen __P((DB_MPOOL *, const char *, int, int,
-   int, size_t, int, DBT *, u_int8_t *, int, DB_MPOOLFILE **));
+int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *, int,
+   int, int, size_t, int, DBT *, u_int8_t *, int, DB_MPOOLFILE **));
+char * __memp_fn __P((DB_MPOOLFILE *));
+char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
 void __memp_debug __P((DB_MPOOL *, FILE *, int));
 int __memp_ralloc __P((DB_MPOOL *, size_t, size_t *, void *));
 int __memp_ropen
diff --git a/db2/include/os_ext.h b/db2/include/os_ext.h
index e48a1e9407..2edf2e257d 100644
--- a/db2/include/os_ext.h
+++ b/db2/include/os_ext.h
@@ -1,5 +1,8 @@
 /* DO NOT EDIT: automatically built by dist/distrib. */
 int __db_abspath __P((const char *));
+void *__db_calloc __P((size_t, size_t));
+void *__db_malloc __P((size_t));
+void *__db_realloc __P((void *, size_t));
 int __os_dirlist __P((const char *, char ***, int *));
 void __os_dirfree __P((char **, int));
 int __db_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
@@ -14,6 +17,7 @@ int __db_read __P((int, void *, size_t, ssize_t *));
 int __db_write __P((int, void *, size_t, ssize_t *));
 int __os_seek __P((int, size_t, db_pgno_t, u_long, int));
 int __os_sleep __P((u_long, u_long));
+int __os_spin __P((void));
 int __os_exists __P((const char *, int *));
 int __os_ioinfo __P((const char *, int, off_t *, off_t *));
 int __db_unlink __P((const char *));
diff --git a/db2/include/os_func.h b/db2/include/os_func.h
index 0a72942903..54b64ffaa2 100644
--- a/db2/include/os_func.h
+++ b/db2/include/os_func.h
@@ -4,12 +4,11 @@
  * Copyright (c) 1997
  *	Sleepycat Software.  All rights reserved.
  *
- *	@(#)os_func.h	10.2 (Sleepycat) 10/28/97
+ *	@(#)os_func.h	10.4 (Sleepycat) 11/28/97
  */
 
 /* Calls which can be replaced by the application. */
 struct __db_jumptab {
-	void   *(*db_calloc) __P((size_t, size_t));	/* DB_FUNC_CALLOC */
 	int	(*db_close) __P((int));			/* DB_FUNC_CLOSE */
 	void	(*db_dirfree) __P((char **, int));	/* DB_FUNC_DIRFREE */
 	int	(*db_dirlist)				/* DB_FUNC_DIRLIST */
@@ -54,7 +53,6 @@ extern struct __db_jumptab __db_jump;
  * part of DB is the only code that should use the __os_XXX names, all other
  * parts of DB should be calling __db_XXX functions.
  */
-#define	__db_calloc	__db_jump.db_calloc
 #define	__os_close	__db_jump.db_close	/* __db_close is a wrapper. */
 #define	__db_dirfree	__db_jump.db_dirfree
 #define	__db_dirlist	__db_jump.db_dirlist
@@ -62,11 +60,9 @@ extern struct __db_jumptab __db_jump;
 #define	__db_free	__db_jump.db_free
 #define	__os_fsync	__db_jump.db_fsync	/* __db_fsync is a wrapper. */
 #define	__db_ioinfo	__db_jump.db_ioinfo
-#define	__db_malloc	__db_jump.db_malloc
 #define	__db_map	__db_jump.db_map
 #define	__os_open	__db_jump.db_open	/* __db_open is a wrapper. */
 #define	__os_read	__db_jump.db_read	/* __db_read is a wrapper. */
-#define	__db_realloc	__db_jump.db_realloc
 #define	__db_seek	__db_jump.db_seek
 #define	__db_sleep	__db_jump.db_sleep
 #define	__db_strdup	__db_jump.db_strdup