/ Check-in [21266c68]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Allow the SQLITE_API macro to apply to the sqlite3_win32_sleep function.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | compiler-compat
Files: files | file ages | folders
SHA1:21266c68afb067ff40062df1e8b383dfd247c17b
User & Date: mistachkin 2012-06-18 17:15:29
Context
2012-06-21
14:05
Merge several compiler compatibility fixes to trunk. check-in: d3d491a5 user: mistachkin tags: trunk
2012-06-18
17:15
Allow the SQLITE_API macro to apply to the sqlite3_win32_sleep function. Closed-Leaf check-in: 21266c68 user: mistachkin tags: compiler-compat
08:00
Fix a few compilation issues that can occur with certain compilers (e.g. GCC 2.95.3, MSVC). check-in: f970a3de user: mistachkin tags: compiler-compat
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/mutex_w32.c.

105
106
107
108
109
110
111


112
113
114
115
116
117
118
...
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* As winMutexInit() and winMutexEnd() are called as part
** of the sqlite3_initialize and sqlite3_shutdown()
** processing, the "interlocked" magic is probably not
** strictly necessary.
*/
static long winMutex_lock = 0;



static int winMutexInit(void){ 
  /* The first to increment to 1 does actual initialization */
  if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){
    int i;
    for(i=0; i<ArraySize(winMutex_staticMutexes); i++){
#if SQLITE_OS_WINRT
      InitializeCriticalSectionEx(&winMutex_staticMutexes[i].mutex, 0, 0);
................................................................................
      InitializeCriticalSection(&winMutex_staticMutexes[i].mutex);
#endif
    }
    winMutex_isInit = 1;
  }else{
    /* Someone else is in the process of initing the static mutexes */
    while( !winMutex_isInit ){
      extern void sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */
      sqlite3_win32_sleep(1);
    }
  }
  return SQLITE_OK; 
}

static int winMutexEnd(void){ 







>
>







 







<







105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
...
122
123
124
125
126
127
128

129
130
131
132
133
134
135
/* As winMutexInit() and winMutexEnd() are called as part
** of the sqlite3_initialize and sqlite3_shutdown()
** processing, the "interlocked" magic is probably not
** strictly necessary.
*/
static long winMutex_lock = 0;

void sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */

static int winMutexInit(void){ 
  /* The first to increment to 1 does actual initialization */
  if( InterlockedCompareExchange(&winMutex_lock, 1, 0)==0 ){
    int i;
    for(i=0; i<ArraySize(winMutex_staticMutexes); i++){
#if SQLITE_OS_WINRT
      InitializeCriticalSectionEx(&winMutex_staticMutexes[i].mutex, 0, 0);
................................................................................
      InitializeCriticalSection(&winMutex_staticMutexes[i].mutex);
#endif
    }
    winMutex_isInit = 1;
  }else{
    /* Someone else is in the process of initing the static mutexes */
    while( !winMutex_isInit ){

      sqlite3_win32_sleep(1);
    }
  }
  return SQLITE_OK; 
}

static int winMutexEnd(void){