X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fsysdep_decls.h;h=f2480f47de3bb1ca0aae85fae46ced38b75d1310;hb=5abf3d0c3343809374a116cbe23c808a81a780c4;hp=d2ae1b87af3861d5fa93a6fe433fd82a06170959;hpb=091d26d0ce0524e664020f5d33b13bc42e6a88e0;p=citadel.git diff --git a/citadel/sysdep_decls.h b/citadel/sysdep_decls.h index d2ae1b87a..f2480f47d 100644 --- a/citadel/sysdep_decls.h +++ b/citadel/sysdep_decls.h @@ -14,7 +14,22 @@ #include #include #include "sysdep.h" + +#ifdef HAVE_DB_H +#include +#elif defined(HAVE_DB4_DB_H) +#include +#else +#error Neither nor was found by configure. Install db4-devel. +#endif + + +#if DB_VERSION_MAJOR < 4 || DB_VERSION_MINOR < 1 +#error Citadel requires Berkeley DB v4.1 or newer. Please upgrade. +#endif + #include "server.h" +#include "database.h" #if SIZEOF_SIZE_T == SIZEOF_INT #define SIZE_T_FMT "%d" @@ -96,11 +111,6 @@ extern volatile int restart_server; extern int verbosity; extern int rescan[]; -extern struct worker_node { - pthread_t tid; - struct worker_node *next; -} *worker_list; - /* @@ -150,14 +160,22 @@ extern struct CtdlThreadNode { struct CtdlThreadNode *next; /* Next thread in the thread table */ } *CtdlThreadList; +typedef struct { + DB_TXN *tid; /* Transaction handle */ + DBC *cursors[MAXCDB]; /* Cursors, for traversals... */ + struct CtdlThreadNode *self; /* Pointer to this threads control structure */ +}ThreadTSD ; extern double CtdlThreadLoadAvg; extern double CtdlThreadWorkerAvg; +extern pthread_key_t ThreadKey; +void ctdl_thread_internal_init_tsd(void); void ctdl_internal_thread_gc (void); void ctdl_thread_internal_init(void); void ctdl_thread_internal_cleanup(void); void ctdl_thread_internal_calc_loadavg(void); +void ctdl_thread_internal_free_tsd(void); struct CtdlThreadNode *ctdl_internal_create_thread(char *name, long flags, void *(*thread_func) (void *arg), void *args);