1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1996, 2015 Oracle and/or its affiliates. All rights reserved.
*
* $Id$
*/
#ifndef _DB_GLOBALS_H_
#define _DB_GLOBALS_H_
#if defined(__cplusplus)
extern "C" {
#endif
/*******************************************************
* Global variables.
*
* Held in a single structure to minimize the name-space pollution.
*******************************************************/
#ifdef HAVE_VXWORKS
#include "semLib.h"
#endif
typedef struct __db_globals {
#ifdef HAVE_VXWORKS
u_int32_t db_global_init; /* VxWorks: inited */
SEM_ID db_global_lock; /* VxWorks: global semaphore */
#endif
#ifdef DB_WIN32
#ifndef DB_WINCE
/*
* These fields are used by the Windows implementation of mutexes.
* Usually they are initialized by the first DB API call to lock a
* mutex. If that would result in the mutexes being inaccessible by
* other threads (e.g., ones which have lesser privileges) the
* application may first call db_env_set_win_security().
*/
SECURITY_DESCRIPTOR win_default_sec_desc;
SECURITY_ATTRIBUTES win_default_sec_attr;
#endif
SECURITY_ATTRIBUTES *win_sec_attr;
#endif
/* TAILQ_HEAD(__envq, __dbenv) envq; */
struct __envq {
struct __env *tqh_first;
struct __env **tqh_last;
} envq;
char *db_line; /* DB display string. */
char error_buf[40]; /* Error string buffer. */
int random_seeded; /* Has __os_srandom been called? */
#if defined(HAVE_RANDOM_R)
struct random_data random_data; /* srandom_r/random_r argument */
char random_state[64]; /* random number state */
#elif !defined(HAVE_RAND) && !defined(HAVE_RANDOM)
u_long rand_next; /* next rand value for clib/rand.c */
#endif
u_int32_t fid_serial; /* file id counter */
int db_errno; /* Errno value if not available */
char *saved_errstr; /* saved error string from backup */
char *time_format; /* strftime-format for printing dates */
#if defined(HAVE_ERROR_HISTORY) && defined(HAVE_PTHREAD_SELF)
pthread_key_t msgs_key;
pthread_once_t thread_once;
#endif
/* Underlying OS interface jump table.*/
void (*j_assert) __P((const char *, const char *, int));
int (*j_close) __P((int));
void (*j_dirfree) __P((char **, int));
int (*j_dirlist) __P((const char *, char ***, int *));
int (*j_exists) __P((const char *, int *));
void (*j_free) __P((void *));
int (*j_fsync) __P((int));
int (*j_ftruncate) __P((int, off_t));
int (*j_ioinfo) __P((const char *,
int, u_int32_t *, u_int32_t *, u_int32_t *));
void *(*j_malloc) __P((size_t));
int (*j_file_map) __P((DB_ENV *, char *, size_t, int, void **));
int (*j_file_unmap) __P((DB_ENV *, void *));
int (*j_open) __P((const char *, int, ...));
ssize_t (*j_pread) __P((int, void *, size_t, off_t));
ssize_t (*j_pwrite) __P((int, const void *, size_t, off_t));
ssize_t (*j_read) __P((int, void *, size_t));
void *(*j_realloc) __P((void *, size_t));
int (*j_region_map) __P((DB_ENV *, char *, size_t, int *, void **));
int (*j_region_unmap) __P((DB_ENV *, void *));
int (*j_rename) __P((const char *, const char *));
int (*j_seek) __P((int, off_t, int));
int (*j_unlink) __P((const char *));
ssize_t (*j_write) __P((int, const void *, size_t));
int (*j_yield) __P((u_long, u_long));
} DB_GLOBALS;
extern DB_GLOBALS __db_global_values;
#define DB_GLOBAL(v) __db_global_values.v
#if defined(__cplusplus)
}
#endif
#endif /* !_DB_GLOBALS_H_ */
|