Overview
Comment: | Move of_tlskey_{new,free} to API-specific files |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
4b31620e278c09796845a59f4db015e8 |
User & Date: | js on 2016-04-24 15:31:35 |
Other Links: | manifest | tags |
Context
2016-04-24
| ||
16:57 | OFKernelEventObserver_epoll: Use fd + 1 as key check-in: 2c3910e9fd user: js tags: trunk | |
15:31 | Move of_tlskey_{new,free} to API-specific files check-in: 4b31620e27 user: js tags: trunk | |
14:36 | OFZIP: Preserve mode when extracting .gz files check-in: f984c522b1 user: js tags: trunk | |
Changes
Modified src/threading.h from [adb5774a4e] to [f81dcfe3c4].
︙ | ︙ | |||
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | extern bool of_thread_new(of_thread_t *thread, void (*function)(id), id object, const of_thread_attr_t *attr); extern void of_thread_set_name(of_thread_t thread, const char *name); extern bool of_thread_join(of_thread_t thread); extern bool of_thread_detach(of_thread_t thread); extern void OF_NO_RETURN_FUNC of_thread_exit(void); extern void of_once(of_once_t *control, void (*func)(void)); extern bool of_mutex_new(of_mutex_t *mutex); extern bool of_mutex_lock(of_mutex_t *mutex); extern bool of_mutex_trylock(of_mutex_t *mutex); extern bool of_mutex_unlock(of_mutex_t *mutex); extern bool of_mutex_free(of_mutex_t *mutex); extern bool of_rmutex_new(of_rmutex_t *rmutex); extern bool of_rmutex_lock(of_rmutex_t *rmutex); extern bool of_rmutex_trylock(of_rmutex_t *rmutex); extern bool of_rmutex_unlock(of_rmutex_t *rmutex); extern bool of_rmutex_free(of_rmutex_t *rmutex); extern bool of_condition_new(of_condition_t *condition); extern bool of_condition_signal(of_condition_t *condition); extern bool of_condition_broadcast(of_condition_t *condition); extern bool of_condition_wait(of_condition_t *condition, of_mutex_t *mutex); extern bool of_condition_timed_wait(of_condition_t *condition, of_mutex_t *mutex, of_time_interval_t timeout); extern bool of_condition_free(of_condition_t *condition); /* TLS keys and spinlocks are inlined for performance. */ | > > > | | < | > | | < | < > > | < < < < < < < < < < < < < < < < < < < < | < | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | extern bool of_thread_new(of_thread_t *thread, void (*function)(id), id object, const of_thread_attr_t *attr); extern void of_thread_set_name(of_thread_t thread, const char *name); extern bool of_thread_join(of_thread_t thread); extern bool of_thread_detach(of_thread_t thread); extern void OF_NO_RETURN_FUNC of_thread_exit(void); extern void of_once(of_once_t *control, void (*func)(void)); extern bool of_tlskey_new(of_tlskey_t *key); extern bool of_tlskey_free(of_tlskey_t key); extern bool of_mutex_new(of_mutex_t *mutex); extern bool of_mutex_lock(of_mutex_t *mutex); extern bool of_mutex_trylock(of_mutex_t *mutex); extern bool of_mutex_unlock(of_mutex_t *mutex); extern bool of_mutex_free(of_mutex_t *mutex); extern bool of_rmutex_new(of_rmutex_t *rmutex); extern bool of_rmutex_lock(of_rmutex_t *rmutex); extern bool of_rmutex_trylock(of_rmutex_t *rmutex); extern bool of_rmutex_unlock(of_rmutex_t *rmutex); extern bool of_rmutex_free(of_rmutex_t *rmutex); extern bool of_condition_new(of_condition_t *condition); extern bool of_condition_signal(of_condition_t *condition); extern bool of_condition_broadcast(of_condition_t *condition); extern bool of_condition_wait(of_condition_t *condition, of_mutex_t *mutex); extern bool of_condition_timed_wait(of_condition_t *condition, of_mutex_t *mutex, of_time_interval_t timeout); extern bool of_condition_free(of_condition_t *condition); /* TLS keys and spinlocks are inlined for performance. */ #if defined(OF_HAVE_PTHREADS) static OF_INLINE void* of_tlskey_get(of_tlskey_t key) { return pthread_getspecific(key); } static OF_INLINE bool of_tlskey_set(of_tlskey_t key, void *ptr) { return !pthread_setspecific(key, ptr); } #elif defined(OF_WINDOWS) static OF_INLINE void* of_tlskey_get(of_tlskey_t key) { return TlsGetValue(key); } static OF_INLINE bool of_tlskey_set(of_tlskey_t key, void *ptr) { return TlsSetValue(key, ptr); } #else # error No thread local storage available! #endif static OF_INLINE void of_thread_yield(void) { #if defined(OF_HAVE_SCHED_YIELD) sched_yield(); #elif defined(OF_WINDOWS) |
︙ | ︙ |
Modified src/threading_pthread.m from [e25a18277e] to [717df19cb4].
︙ | ︙ | |||
197 198 199 200 201 202 203 204 205 206 207 208 209 210 | } void of_once(of_once_t *control, void (*func)(void)) { pthread_once(control, func); } bool of_mutex_new(of_mutex_t *mutex) { return (pthread_mutex_init(mutex, NULL) == 0); } | > > > > > > > > > > > > | 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | } void of_once(of_once_t *control, void (*func)(void)) { pthread_once(control, func); } bool of_tlskey_new(of_tlskey_t *key) { return (pthread_key_create(key, NULL) == 0); } bool of_tlskey_free(of_tlskey_t key) { return (pthread_key_delete(key) == 0); } bool of_mutex_new(of_mutex_t *mutex) { return (pthread_mutex_init(mutex, NULL) == 0); } |
︙ | ︙ |
Modified src/threading_winapi.m from [9dd35eedd7] to [9c44c1cd1f].
︙ | ︙ | |||
85 86 87 88 89 90 91 92 93 94 95 96 97 98 | OF_UNREACHABLE } void of_thread_set_name(of_thread_t thread, const char *name) { } bool of_mutex_new(of_mutex_t *mutex) { InitializeCriticalSection(mutex); return true; | > > > > > > > > > > > > | 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | OF_UNREACHABLE } void of_thread_set_name(of_thread_t thread, const char *name) { } bool of_tlskey_new(of_tlskey_t *key) { return ((*key = TlsAlloc()) != TLS_OUT_OF_INDEXES); } bool of_tlskey_free(of_tlskey_t key) { return TlsFree(key); } bool of_mutex_new(of_mutex_t *mutex) { InitializeCriticalSection(mutex); return true; |
︙ | ︙ |