[elephant-cvs] CVS update: elephant/src/sleepycat.lisp
blee at common-lisp.net
blee at common-lisp.net
Sun Aug 29 07:55:30 UTC 2004
Update of /project/elephant/cvsroot/elephant/src
In directory common-lisp.net:/tmp/cvs-serv32447/src
Modified Files:
sleepycat.lisp
Log Message:
linux / sbcl, reorg
Date: Sun Aug 29 09:55:29 2004
Author: blee
Index: elephant/src/sleepycat.lisp
diff -u elephant/src/sleepycat.lisp:1.4 elephant/src/sleepycat.lisp:1.5
--- elephant/src/sleepycat.lisp:1.4 Sat Aug 28 08:41:49 2004
+++ elephant/src/sleepycat.lisp Sun Aug 29 09:55:29 2004
@@ -67,6 +67,49 @@
(in-package "SLEEPYCAT")
+(eval-when (:compile-toplevel :load-toplevel)
+ ;; UFFI
+ ;;(asdf:operate 'asdf:load-op :uffi)
+
+ ;; DSO loading
+
+ ;; Under linux you need to load some kind of pthread
+ ;; library. I can't figure out which is the right one.
+ ;; This one worked for me. There are known issues with
+ ;; Red Hat and Berkeley DB, search google.
+ #+linux
+ (uffi:load-foreign-library "/lib/tls/libpthread.so.0" :module "pthread")
+
+ (uffi:load-foreign-library "/usr/local/lib/db42/libdb.so"
+ :module "sleepycat")
+ (uffi:load-foreign-library
+ "/home/ben/lisp/elephant/libsleepycat.so"
+;; "/usr/local/share/common-lisp/elephant/libsleepycat.so"
+ :module "libsleepycat")
+
+ (def-type pointer-int (* :int))
+ (def-type pointer-void :pointer-void)
+ (def-foreign-type array-or-pointer-char
+ #+allegro (:array :char)
+ #+(or cmu sbcl scl) (* :char))
+ (def-type array-or-pointer-char array-or-pointer-char)
+ (def-enum DBTYPE ((:BTREE 1) :HASH :QUEUE :RECNO :UNKNOWN))
+)
+
+(declaim (inline read-int read-uint read-float read-double
+ write-int write-uint write-float write-double
+ offset-char-pointer copy-str-to-buf copy-bufs
+ %db-get-key-buffered db-get-key-buffered
+ %db-get-buffered db-get-buffered db-get
+ %db-put-buffered db-put-buffered
+ %db-put db-put
+ %db-delete db-delete-buffered db-delete
+ %db-txn-begin db-transaction-begin
+ %db-txn-abort db-transaction-abort
+ %db-txn-commit db-transaction-commit
+ %db-transaction-id
+ flags))
+
;; Constants and Flags
;; eventually write a macro which generates a custom flag function.
@@ -112,41 +155,9 @@
(defconstant DB_LOCK_NOTGRANTED -30994)
(defconstant DB_NOTFOUND -30990)
+(defconstant +NULL-VOID+ (make-null-pointer :void))
+(defconstant +NULL-CHAR+ (make-null-pointer :char))
-(eval-when (:compile-toplevel :load-toplevel)
- ;; UFFI
- ;;(asdf:operate 'asdf:load-op :uffi)
-
- ;; DSO loading
- (defconstant +path-to-libsleepycat+
- "/home/ben/lisp/elephant/libsleepycat.so")
- (defconstant +path-to-sleepycat+
- "/usr/local/lib/db42/libdb.so")
- (uffi:load-foreign-library +path-to-sleepycat+ :module "sleepycat")
- (uffi:load-foreign-library +path-to-libsleepycat+ :module "libsleepycat")
-
- (def-type pointer-int (* :int))
- (def-type pointer-void :pointer-void)
- (def-foreign-type array-or-pointer-char
- #+allegro (:array :char)
- #+(or cmu sbcl scl) (* :char))
- (def-type array-or-pointer-char array-or-pointer-char)
- (def-enum DBTYPE ((:BTREE 1) :HASH :QUEUE :RECNO :UNKNOWN))
-)
-
-(declaim (inline read-int read-uint read-float read-double
- write-int write-uint write-float write-double
- offset-char-pointer copy-str-to-buf copy-bufs
- %db-get-key-buffered db-get-key-buffered
- %db-get-buffered db-get-buffered db-get
- %db-put-buffered db-put-buffered
- %db-put db-put
- %db-delete db-delete-buffered db-delete
- %db-txn-begin db-transaction-begin
- %db-txn-abort db-transaction-abort
- %db-txn-commit db-transaction-commit
- %db-transaction-id
- flags))
;; Buffer management / pointer arithmetic
@@ -280,16 +291,13 @@
;; Thread local storage (special variables)
-(defconstant +NULL-VOID+ (make-null-pointer :void))
-(defconstant +NULL-CHAR+ (make-null-pointer :char))
+(declaim (type array-or-pointer-char *get-buffer*)
+ (type fixnum *get-buffer-length*))
(defvar *current-transaction* +NULL-VOID+)
(defvar *errno-buffer* (allocate-foreign-object :int 1))
-(declaim (type array-or-pointer-char *get-buffer*)
- (type fixnum *get-buffer-length*))
-
(defvar *get-buffer* (allocate-foreign-object :char 1))
(defvar *get-buffer-length* 0)
@@ -1035,7 +1043,7 @@
(let ((ret (%next-counter env db key key-length lockid lockid-length)))
(if (< ret 0)
(error 'db-error :errno ret)
- ret))))
+ ret)))
;; Misc
More information about the Elephant-cvs
mailing list