summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/include/os.h
diff options
context:
space:
mode:
authorAlex Gorrod <alexg@wiredtiger.com>2016-04-05 14:43:57 +1000
committerAlex Gorrod <alexg@wiredtiger.com>2016-04-05 14:44:50 +1000
commitde6f136d83b20f8a58ba6fe4ba02be229b6c9159 (patch)
tree3221d66b54cbf6208fc3c995fdbb36d347ae85ff /src/third_party/wiredtiger/src/include/os.h
parent5d1262cc394d685b59ae3185d7315227085e897d (diff)
downloadmongo-de6f136d83b20f8a58ba6fe4ba02be229b6c9159.tar.gz
Import wiredtiger-wiredtiger-2.8.0-134-g5047aab.tar.gz from wiredtiger branch mongodb-3.4
ref: 9cf8eb2..5047aab SERVER-23504 Coverity analysis defect 98177: Resource leak WT-2330 in-memory configurations should not create on-disk collection files WT-2513 conversion from 'int64_t' to 'uint32_t' WT-2522 Incorrect format code in message WT-2525 in-memory configurations: miscellaneous cleanups WT-2527 OS X compile error, missing POSIX_FADV_WILLNEED #define WT-2528 style error in WiredTiger build WT-2529 The readonly test case is crashing with a stack overflow WT-2531 in-memory tables are allocating unnecessary memory WT-2532 WT_STREAM_APPEND and WT_STREAM_LINE_BUFFER flag overlap WT-2533 Ensure that in-memory tables don't report a zero size SERVER-23517 WiredTiger changes for MongoDB 3.3.5
Diffstat (limited to 'src/third_party/wiredtiger/src/include/os.h')
-rw-r--r--src/third_party/wiredtiger/src/include/os.h87
1 files changed, 57 insertions, 30 deletions
diff --git a/src/third_party/wiredtiger/src/include/os.h b/src/third_party/wiredtiger/src/include/os.h
index fbba7f05f88..2ff41d39f46 100644
--- a/src/third_party/wiredtiger/src/include/os.h
+++ b/src/third_party/wiredtiger/src/include/os.h
@@ -7,29 +7,6 @@
*/
/*
- * FILE handle close/open configuration.
- */
-typedef enum {
- WT_FHANDLE_APPEND, WT_FHANDLE_READ, WT_FHANDLE_WRITE
-} WT_FHANDLE_MODE;
-
-#ifdef _WIN32
-/*
- * Open in binary (untranslated) mode; translations involving carriage-return
- * and linefeed characters are suppressed.
- */
-#define WT_FOPEN_APPEND "ab"
-#define WT_FOPEN_READ "rb"
-#define WT_FOPEN_WRITE "wb"
-#else
-#define WT_FOPEN_APPEND "a"
-#define WT_FOPEN_READ "r"
-#define WT_FOPEN_WRITE "w"
-#endif
-
-#define WT_FOPEN_FIXED 0x1 /* Path isn't relative to home */
-
-/*
* Number of directory entries can grow dynamically.
*/
#define WT_DIR_ENTRY 32
@@ -81,24 +58,52 @@ typedef enum {
(t1).tv_nsec < (t2).tv_nsec ? -1 : \
(t1).tv_nsec == (t2).tv_nsec ? 0 : 1 : 1)
+/*
+ * The underlying OS calls return ENOTSUP if posix_fadvise functionality isn't
+ * available, but WiredTiger uses the POSIX flag names in the API. Use distinct
+ * values so the underlying code can distinguish.
+ */
+#ifndef POSIX_FADV_DONTNEED
+#define POSIX_FADV_DONTNEED 0x01
+#endif
+#ifndef POSIX_FADV_WILLNEED
+#define POSIX_FADV_WILLNEED 0x02
+#endif
+
+#define WT_OPEN_CREATE 0x001 /* Create is OK */
+#define WT_OPEN_EXCLUSIVE 0x002 /* Exclusive open */
+#define WT_OPEN_FIXED 0x004 /* Path isn't relative to home */
+#define WT_OPEN_READONLY 0x008 /* Readonly open */
+#define WT_STREAM_APPEND 0x010 /* Open a stream: append */
+#define WT_STREAM_LINE_BUFFER 0x020 /* Line buffer the stream */
+#define WT_STREAM_READ 0x040 /* Open a stream: read */
+#define WT_STREAM_WRITE 0x080 /* Open a stream: write */
+
struct __wt_fh {
- char *name; /* File name */
+ const char *name; /* File name */
uint64_t name_hash; /* Hash of name */
TAILQ_ENTRY(__wt_fh) q; /* List of open handles */
TAILQ_ENTRY(__wt_fh) hashq; /* Hashed list of handles */
u_int ref; /* Reference count */
-#ifndef _WIN32
- int fd; /* POSIX file handle */
-#else
+ /*
+ * Underlying file system handle support.
+ */
+#ifdef _WIN32
HANDLE filehandle; /* Windows file handle */
HANDLE filehandle_secondary; /* Windows file handle
for file size changes */
+#else
+ int fd; /* POSIX file handle */
#endif
- wt_off_t size; /* File size */
- wt_off_t extend_size; /* File extended size */
- wt_off_t extend_len; /* File extend chunk size */
+ FILE *fp; /* ANSI C stdio handle */
+
+ /*
+ * Underlying in-memory handle support.
+ */
+ size_t off; /* Read/write offset */
+ WT_ITEM buf; /* Data */
bool direct_io; /* O_DIRECT configured */
@@ -109,4 +114,26 @@ struct __wt_fh {
WT_FALLOCATE_STD,
WT_FALLOCATE_SYS } fallocate_available;
bool fallocate_requires_locking;
+
+#define WT_FH_FLUSH_ON_CLOSE 0x01 /* Flush when closing */
+#define WT_FH_IN_MEMORY 0x02 /* In-memory, don't remove */
+ uint32_t flags;
+
+ int (*fh_advise)(WT_SESSION_IMPL *, WT_FH *, wt_off_t, wt_off_t, int);
+ int (*fh_allocate)(WT_SESSION_IMPL *, WT_FH *, wt_off_t, wt_off_t);
+ int (*fh_close)(WT_SESSION_IMPL *, WT_FH *);
+ int (*fh_getc)(WT_SESSION_IMPL *, WT_FH *, int *);
+ int (*fh_lock)(WT_SESSION_IMPL *, WT_FH *, bool);
+ int (*fh_map)(WT_SESSION_IMPL *, WT_FH *, void *, size_t *, void **);
+ int (*fh_map_discard)(WT_SESSION_IMPL *, WT_FH *, void *, size_t);
+ int (*fh_map_preload)(WT_SESSION_IMPL *, WT_FH *, const void *, size_t);
+ int (*fh_map_unmap)(
+ WT_SESSION_IMPL *, WT_FH *, void *, size_t, void **);
+ int (*fh_printf)(WT_SESSION_IMPL *, WT_FH *, const char *, va_list);
+ int (*fh_read)(WT_SESSION_IMPL *, WT_FH *, wt_off_t, size_t, void *);
+ int (*fh_size)(WT_SESSION_IMPL *, WT_FH *, wt_off_t *);
+ int (*fh_sync)(WT_SESSION_IMPL *, WT_FH *, bool);
+ int (*fh_truncate)(WT_SESSION_IMPL *, WT_FH *, wt_off_t);
+ int (*fh_write)(
+ WT_SESSION_IMPL *, WT_FH *, wt_off_t, size_t, const void *);
};