Lines Matching +full:- +full:- +full:enable +full:- +full:werror

10  * See the COPYING file in the top-level directory.
17 #include "qemu-thread-common.h"
27 void qemu_thread_naming(bool enable) in qemu_thread_naming() argument
29 name_threads = enable; in qemu_thread_naming()
35 if (enable) { in qemu_thread_naming()
59 ts->tv_nsec += (ms % 1000) * 1000000; in compute_abs_deadline()
60 ts->tv_sec += ms / 1000; in compute_abs_deadline()
61 if (ts->tv_nsec >= 1000000000) { in compute_abs_deadline()
62 ts->tv_sec++; in compute_abs_deadline()
63 ts->tv_nsec -= 1000000000; in compute_abs_deadline()
71 err = pthread_mutex_init(&mutex->lock, NULL); in qemu_mutex_init()
81 assert(mutex->initialized); in qemu_mutex_destroy()
82 mutex->initialized = false; in qemu_mutex_destroy()
83 err = pthread_mutex_destroy(&mutex->lock); in qemu_mutex_destroy()
92 assert(mutex->initialized); in qemu_mutex_lock_impl()
94 err = pthread_mutex_lock(&mutex->lock); in qemu_mutex_lock_impl()
104 assert(mutex->initialized); in qemu_mutex_trylock_impl()
105 err = pthread_mutex_trylock(&mutex->lock); in qemu_mutex_trylock_impl()
113 return -EBUSY; in qemu_mutex_trylock_impl()
120 assert(mutex->initialized); in qemu_mutex_unlock_impl()
122 err = pthread_mutex_unlock(&mutex->lock); in qemu_mutex_unlock_impl()
134 err = pthread_mutex_init(&mutex->m.lock, &attr); in qemu_rec_mutex_init()
139 mutex->m.initialized = true; in qemu_rec_mutex_init()
144 qemu_mutex_destroy(&mutex->m); in qemu_rec_mutex_destroy()
149 qemu_mutex_lock_impl(&mutex->m, file, line); in qemu_rec_mutex_lock_impl()
154 return qemu_mutex_trylock_impl(&mutex->m, file, line); in qemu_rec_mutex_trylock_impl()
159 qemu_mutex_unlock_impl(&mutex->m, file, line); in qemu_rec_mutex_unlock_impl()
177 err = pthread_cond_init(&cond->cond, &attr); in qemu_cond_init()
185 cond->initialized = true; in qemu_cond_init()
192 assert(cond->initialized); in qemu_cond_destroy()
193 cond->initialized = false; in qemu_cond_destroy()
194 err = pthread_cond_destroy(&cond->cond); in qemu_cond_destroy()
203 assert(cond->initialized); in qemu_cond_signal()
204 err = pthread_cond_signal(&cond->cond); in qemu_cond_signal()
213 assert(cond->initialized); in qemu_cond_broadcast()
214 err = pthread_cond_broadcast(&cond->cond); in qemu_cond_broadcast()
223 assert(cond->initialized); in qemu_cond_wait_impl()
225 err = pthread_cond_wait(&cond->cond, &mutex->lock); in qemu_cond_wait_impl()
237 assert(cond->initialized); in qemu_cond_timedwait_ts()
239 err = pthread_cond_timedwait(&cond->cond, &mutex->lock, ts); in qemu_cond_timedwait_ts()
258 qemu_mutex_init(&sem->mutex); in qemu_sem_init()
259 qemu_cond_init(&sem->cond); in qemu_sem_init()
264 sem->count = init; in qemu_sem_init()
269 qemu_cond_destroy(&sem->cond); in qemu_sem_destroy()
270 qemu_mutex_destroy(&sem->mutex); in qemu_sem_destroy()
275 qemu_mutex_lock(&sem->mutex); in qemu_sem_post()
276 if (sem->count == UINT_MAX) { in qemu_sem_post()
279 sem->count++; in qemu_sem_post()
280 qemu_cond_signal(&sem->cond); in qemu_sem_post()
282 qemu_mutex_unlock(&sem->mutex); in qemu_sem_post()
291 qemu_mutex_lock(&sem->mutex); in qemu_sem_timedwait()
292 while (sem->count == 0) { in qemu_sem_timedwait()
296 rc = qemu_cond_timedwait_ts(&sem->cond, &sem->mutex, &ts, in qemu_sem_timedwait()
304 --sem->count; in qemu_sem_timedwait()
306 qemu_mutex_unlock(&sem->mutex); in qemu_sem_timedwait()
307 return (rc ? 0 : -1); in qemu_sem_timedwait()
312 qemu_mutex_lock(&sem->mutex); in qemu_sem_wait()
313 while (sem->count == 0) { in qemu_sem_wait()
314 qemu_cond_wait(&sem->cond, &sem->mutex); in qemu_sem_wait()
316 --sem->count; in qemu_sem_wait()
317 qemu_mutex_unlock(&sem->mutex); in qemu_sem_wait()
323 * Note that in this implementation you can register a thread-exit
342 * Called when non-main thread exits (via qemu_thread_exit() in qemu_thread_atexit_notify()
357 void *(*start_routine)(void *) = qemu_thread_args->start_routine; in qemu_thread_start()
358 void *arg = qemu_thread_args->arg; in qemu_thread_start()
364 if (name_threads && qemu_thread_args->name) { in qemu_thread_start()
366 pthread_setname_np(pthread_self(), qemu_thread_args->name); in qemu_thread_start()
368 pthread_setname_np(qemu_thread_args->name); in qemu_thread_start()
370 pthread_set_name_np(pthread_self(), qemu_thread_args->name); in qemu_thread_start()
373 QEMU_TSAN_ANNOTATE_THREAD_NAME(qemu_thread_args->name); in qemu_thread_start()
374 g_free(qemu_thread_args->name); in qemu_thread_start()
380 * qemu-thread-posix.c:540:5: error: ‘__sigsetjmp’ accessing 656 bytes in qemu_thread_start()
381 * in a region of size 528 [-Werror=stringop-overflow=] in qemu_thread_start()
389 #pragma GCC diagnostic ignored "-Wstringop-overflow" in qemu_thread_start()
429 qemu_thread_args->name = g_strdup(name); in qemu_thread_create()
430 qemu_thread_args->start_routine = start_routine; in qemu_thread_create()
431 qemu_thread_args->arg = arg; in qemu_thread_create()
433 err = pthread_create(&thread->thread, &attr, in qemu_thread_create()
463 err = pthread_setaffinity_np(thread->thread, setsize, cpuset); in qemu_thread_set_affinity()
467 return -ENOSYS; in qemu_thread_set_affinity()
486 err = pthread_getaffinity_np(thread->thread, setsize, cpuset); in qemu_thread_get_affinity()
489 if (err != -EINVAL) { in qemu_thread_get_affinity()
509 return -ENOSYS; in qemu_thread_get_affinity()
515 thread->thread = pthread_self(); in qemu_thread_get_self()
520 return pthread_equal(pthread_self(), thread->thread); in qemu_thread_is_self()
533 err = pthread_join(thread->thread, &ret); in qemu_thread_join()