| OLD | NEW |
| 1 /* | 1 /* |
| 2 ** 2007 August 28 | 2 ** 2007 August 28 |
| 3 ** | 3 ** |
| 4 ** The author disclaims copyright to this source code. In place of | 4 ** The author disclaims copyright to this source code. In place of |
| 5 ** a legal notice, here is a blessing: | 5 ** a legal notice, here is a blessing: |
| 6 ** | 6 ** |
| 7 ** May you do good and not evil. | 7 ** May you do good and not evil. |
| 8 ** May you find forgiveness for yourself and forgive others. | 8 ** May you find forgiveness for yourself and forgive others. |
| 9 ** May you share freely, never taking more than you give. | 9 ** May you share freely, never taking more than you give. |
| 10 ** | 10 ** |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 ** mutex and returns a pointer to it. If it returns NULL | 89 ** mutex and returns a pointer to it. If it returns NULL |
| 90 ** that means that a mutex could not be allocated. SQLite | 90 ** that means that a mutex could not be allocated. SQLite |
| 91 ** will unwind its stack and return an error. The argument | 91 ** will unwind its stack and return an error. The argument |
| 92 ** to sqlite3_mutex_alloc() is one of these integer constants: | 92 ** to sqlite3_mutex_alloc() is one of these integer constants: |
| 93 ** | 93 ** |
| 94 ** <ul> | 94 ** <ul> |
| 95 ** <li> SQLITE_MUTEX_FAST | 95 ** <li> SQLITE_MUTEX_FAST |
| 96 ** <li> SQLITE_MUTEX_RECURSIVE | 96 ** <li> SQLITE_MUTEX_RECURSIVE |
| 97 ** <li> SQLITE_MUTEX_STATIC_MASTER | 97 ** <li> SQLITE_MUTEX_STATIC_MASTER |
| 98 ** <li> SQLITE_MUTEX_STATIC_MEM | 98 ** <li> SQLITE_MUTEX_STATIC_MEM |
| 99 ** <li> SQLITE_MUTEX_STATIC_MEM2 | 99 ** <li> SQLITE_MUTEX_STATIC_OPEN |
| 100 ** <li> SQLITE_MUTEX_STATIC_PRNG | 100 ** <li> SQLITE_MUTEX_STATIC_PRNG |
| 101 ** <li> SQLITE_MUTEX_STATIC_LRU | 101 ** <li> SQLITE_MUTEX_STATIC_LRU |
| 102 ** <li> SQLITE_MUTEX_STATIC_PMEM | 102 ** <li> SQLITE_MUTEX_STATIC_PMEM |
| 103 ** <li> SQLITE_MUTEX_STATIC_APP1 |
| 104 ** <li> SQLITE_MUTEX_STATIC_APP2 |
| 105 ** <li> SQLITE_MUTEX_STATIC_APP3 |
| 103 ** </ul> | 106 ** </ul> |
| 104 ** | 107 ** |
| 105 ** The first two constants cause sqlite3_mutex_alloc() to create | 108 ** The first two constants cause sqlite3_mutex_alloc() to create |
| 106 ** a new mutex. The new mutex is recursive when SQLITE_MUTEX_RECURSIVE | 109 ** a new mutex. The new mutex is recursive when SQLITE_MUTEX_RECURSIVE |
| 107 ** is used but not necessarily so when SQLITE_MUTEX_FAST is used. | 110 ** is used but not necessarily so when SQLITE_MUTEX_FAST is used. |
| 108 ** The mutex implementation does not need to make a distinction | 111 ** The mutex implementation does not need to make a distinction |
| 109 ** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does | 112 ** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does |
| 110 ** not want to. But SQLite will only request a recursive mutex in | 113 ** not want to. But SQLite will only request a recursive mutex in |
| 111 ** cases where it really needs one. If a faster non-recursive mutex | 114 ** cases where it really needs one. If a faster non-recursive mutex |
| 112 ** implementation is available on the host platform, the mutex subsystem | 115 ** implementation is available on the host platform, the mutex subsystem |
| (...skipping 13 matching lines...) Expand all Loading... |
| 126 ** mutex types, the same mutex is returned on every call that has | 129 ** mutex types, the same mutex is returned on every call that has |
| 127 ** the same type number. | 130 ** the same type number. |
| 128 */ | 131 */ |
| 129 static sqlite3_mutex *pthreadMutexAlloc(int iType){ | 132 static sqlite3_mutex *pthreadMutexAlloc(int iType){ |
| 130 static sqlite3_mutex staticMutexes[] = { | 133 static sqlite3_mutex staticMutexes[] = { |
| 131 SQLITE3_MUTEX_INITIALIZER, | 134 SQLITE3_MUTEX_INITIALIZER, |
| 132 SQLITE3_MUTEX_INITIALIZER, | 135 SQLITE3_MUTEX_INITIALIZER, |
| 133 SQLITE3_MUTEX_INITIALIZER, | 136 SQLITE3_MUTEX_INITIALIZER, |
| 134 SQLITE3_MUTEX_INITIALIZER, | 137 SQLITE3_MUTEX_INITIALIZER, |
| 135 SQLITE3_MUTEX_INITIALIZER, | 138 SQLITE3_MUTEX_INITIALIZER, |
| 139 SQLITE3_MUTEX_INITIALIZER, |
| 140 SQLITE3_MUTEX_INITIALIZER, |
| 141 SQLITE3_MUTEX_INITIALIZER, |
| 136 SQLITE3_MUTEX_INITIALIZER | 142 SQLITE3_MUTEX_INITIALIZER |
| 137 }; | 143 }; |
| 138 sqlite3_mutex *p; | 144 sqlite3_mutex *p; |
| 139 switch( iType ){ | 145 switch( iType ){ |
| 140 case SQLITE_MUTEX_RECURSIVE: { | 146 case SQLITE_MUTEX_RECURSIVE: { |
| 141 p = sqlite3MallocZero( sizeof(*p) ); | 147 p = sqlite3MallocZero( sizeof(*p) ); |
| 142 if( p ){ | 148 if( p ){ |
| 143 #ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX | 149 #ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX |
| 144 /* If recursive mutexes are not available, we will have to | 150 /* If recursive mutexes are not available, we will have to |
| 145 ** build our own. See below. */ | 151 ** build our own. See below. */ |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 pthreadMutexNotheld | 347 pthreadMutexNotheld |
| 342 #else | 348 #else |
| 343 0, | 349 0, |
| 344 0 | 350 0 |
| 345 #endif | 351 #endif |
| 346 }; | 352 }; |
| 347 | 353 |
| 348 return &sMutex; | 354 return &sMutex; |
| 349 } | 355 } |
| 350 | 356 |
| 351 #endif /* SQLITE_MUTEX_PTHREAD */ | 357 #endif /* SQLITE_MUTEX_PTHREADS */ |
| OLD | NEW |