OpenCoverage

os_common.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/sqlite/src/src/os_common.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2** 2004 May 22-
3**-
4** The author disclaims copyright to this source code. In place of-
5** a legal notice, here is a blessing:-
6**-
7** May you do good and not evil.-
8** May you find forgiveness for yourself and forgive others.-
9** May you share freely, never taking more than you give.-
10**-
11******************************************************************************-
12**-
13** This file contains macros and a little bit of code that is common to-
14** all of the platform-specific files (os_*.c) and is #included into those-
15** files.-
16**-
17** This file should be #included by the os_*.c files only. It is not a-
18** general purpose header file.-
19*/-
20#ifndef _OS_COMMON_H_-
21#define _OS_COMMON_H_-
22-
23/*-
24** At least two bugs have slipped in because we changed the MEMORY_DEBUG-
25** macro to SQLITE_DEBUG and some older makefiles have not yet made the-
26** switch. The following code should catch this problem at compile-time.-
27*/-
28#ifdef MEMORY_DEBUG-
29# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."-
30#endif-
31-
32/*-
33** Macros for performance tracing. Normally turned off. Only works-
34** on i486 hardware.-
35*/-
36#ifdef SQLITE_PERFORMANCE_TRACE-
37-
38/*-
39** hwtime.h contains inline assembler code for implementing-
40** high-performance timing routines.-
41*/-
42#include "hwtime.h"-
43-
44static sqlite_uint64 g_start;-
45static sqlite_uint64 g_elapsed;-
46#define TIMER_START g_start=sqlite3Hwtime()-
47#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start-
48#define TIMER_ELAPSED g_elapsed-
49#else-
50#define TIMER_START-
51#define TIMER_END-
52#define TIMER_ELAPSED ((sqlite_uint64)0)-
53#endif-
54-
55/*-
56** If we compile with the SQLITE_TEST macro set, then the following block-
57** of code will give us the ability to simulate a disk I/O error. This-
58** is used for testing the I/O recovery logic.-
59*/-
60#if defined(SQLITE_TEST)-
61extern int sqlite3_io_error_hit;-
62extern int sqlite3_io_error_hardhit;-
63extern int sqlite3_io_error_pending;-
64extern int sqlite3_io_error_persist;-
65extern int sqlite3_io_error_benign;-
66extern int sqlite3_diskfull_pending;-
67extern int sqlite3_diskfull;-
68#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)-
69#define SimulateIOError(CODE) \-
70 if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \-
71 || sqlite3_io_error_pending-- == 1 ) \-
72 { local_ioerr(); CODE; }-
73static void local_ioerr(){-
74 IOTRACE(("IOERR\n"));-
75 sqlite3_io_error_hit++;-
76 if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
executed 768 times by 1 test: sqlite3_io_error_hardhit++;
Executed by:
  • Self test (438)
!sqlite3_io_error_benignDescription
TRUEevaluated 768 times by 1 test
Evaluated by:
  • Self test (438)
FALSEnever evaluated
0-768
77}
executed 768 times by 1 test: end of block
Executed by:
  • Self test (438)
768
78#define SimulateDiskfullError(CODE) \-
79 if( sqlite3_diskfull_pending ){ \-
80 if( sqlite3_diskfull_pending == 1 ){ \-
81 local_ioerr(); \-
82 sqlite3_diskfull = 1; \-
83 sqlite3_io_error_hit = 1; \-
84 CODE; \-
85 }else{ \-
86 sqlite3_diskfull_pending--; \-
87 } \-
88 }-
89#else-
90#define SimulateIOErrorBenign(X)-
91#define SimulateIOError(A)-
92#define SimulateDiskfullError(A)-
93#endif /* defined(SQLITE_TEST) */-
94-
95/*-
96** When testing, keep a count of the number of open files.-
97*/-
98#if defined(SQLITE_TEST)-
99extern int sqlite3_open_file_count;-
100#define OpenCounter(X) sqlite3_open_file_count+=(X)-
101#else-
102#define OpenCounter(X)-
103#endif /* defined(SQLITE_TEST) */-
104-
105#endif /* !defined(_OS_COMMON_H_) */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2