blob: d5dcbedb1d5a5c3a83c2182df7f97fa368ba0166 (
plain)
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
|
/*-
* Copyright (c) 2008-2014 WiredTiger, Inc.
* All rights reserved.
*
* See the file LICENSE for redistribution information.
*/
#define WT_SYSCALL_RETRY(call, ret) do { \
int __retry; \
for (__retry = 0; __retry < 10; ++__retry) { \
if ((call) == 0) { \
(ret) = 0; \
break; \
} \
switch ((ret) = __wt_errno()) { \
case 0: \
/* The call failed but didn't set errno. */ \
(ret) = WT_ERROR; \
break; \
case EAGAIN: \
case EBUSY: \
case EINTR: \
case EIO: \
case EMFILE: \
case ENFILE: \
case ENOSPC: \
__wt_sleep(0L, 500000L); \
continue; \
default: \
break; \
} \
break; \
} \
} while (0)
#define WT_TIMEDIFF(end, begin) \
(1000000000 * (uint64_t)((end).tv_sec - (begin).tv_sec) + \
(uint64_t)(end).tv_nsec - (uint64_t)(begin).tv_nsec)
#define WT_TIMECMP(t1, t2) \
((t1).tv_sec < (t2).tv_sec ? -1 : \
(t1).tv_sec == (t2.tv_sec) ? \
(t1).tv_nsec < (t2).tv_nsec ? -1 : \
(t1).tv_nsec == (t2).tv_nsec ? 0 : 1 : 1)
struct __wt_fh {
u_int refcnt; /* Reference count */
TAILQ_ENTRY(__wt_fh) q; /* List of open handles */
char *name; /* File name */
int fd; /* POSIX file handle */
off_t size; /* File size */
off_t extend_size; /* File extended size */
off_t extend_len; /* File extend chunk size */
int direct_io; /* O_DIRECT configured */
};
|