/qemu/util/ |
H A D | qemu-coroutine-lock.c | 164 move_waiters(mutex); in pop_waiter() 176 return QSLIST_EMPTY(&mutex->to_pop) || QSLIST_EMPTY(&mutex->from_push); in has_waiters() 181 memset(mutex, 0, sizeof(*mutex)); in qemu_co_mutex_init() 190 mutex->ctx = co->ctx; in qemu_co_mutex_wake() 202 push_waiter(mutex, &w); in qemu_co_mutex_lock_slowpath() 215 has_waiters(mutex) && in qemu_co_mutex_lock_slowpath() 268 mutex->ctx = ctx; in qemu_co_mutex_lock() 272 mutex->holder = self; in qemu_co_mutex_lock() 282 assert(mutex->locked); in qemu_co_mutex_unlock() 286 mutex->ctx = NULL; in qemu_co_mutex_unlock() [all …]
|
H A D | qemu-thread-win32.c | 71 qemu_mutex_post_init(mutex); in qemu_mutex_init() 76 assert(mutex->initialized); in qemu_mutex_destroy() 77 mutex->initialized = false; in qemu_mutex_destroy() 83 assert(mutex->initialized); in qemu_mutex_lock_impl() 93 assert(mutex->initialized); in qemu_mutex_trylock_impl() 104 assert(mutex->initialized); in qemu_mutex_unlock_impl() 112 mutex->initialized = true; in qemu_rec_mutex_init() 117 assert(mutex->initialized); in qemu_rec_mutex_destroy() 118 mutex->initialized = false; in qemu_rec_mutex_destroy() 124 assert(mutex->initialized); in qemu_rec_mutex_lock_impl() [all …]
|
H A D | qemu-thread-common.h | 19 static inline void qemu_mutex_post_init(QemuMutex *mutex) in qemu_mutex_post_init() argument 22 mutex->file = NULL; in qemu_mutex_post_init() 23 mutex->line = 0; in qemu_mutex_post_init() 25 mutex->initialized = true; in qemu_mutex_post_init() 31 trace_qemu_mutex_lock(mutex, file, line); in qemu_mutex_pre_lock() 38 mutex->file = file; in qemu_mutex_post_lock() 39 mutex->line = line; in qemu_mutex_post_lock() 41 trace_qemu_mutex_locked(mutex, file, line); in qemu_mutex_post_lock() 48 mutex->file = NULL; in qemu_mutex_pre_unlock() 49 mutex->line = 0; in qemu_mutex_pre_unlock() [all …]
|
H A D | qemu-thread-posix.c | 74 qemu_mutex_post_init(mutex); in qemu_mutex_init() 81 assert(mutex->initialized); in qemu_mutex_destroy() 82 mutex->initialized = false; in qemu_mutex_destroy() 92 assert(mutex->initialized); in qemu_mutex_lock_impl() 104 assert(mutex->initialized); in qemu_mutex_trylock_impl() 120 assert(mutex->initialized); in qemu_mutex_unlock_impl() 139 mutex->m.initialized = true; in qemu_rec_mutex_init() 144 qemu_mutex_destroy(&mutex->m); in qemu_rec_mutex_destroy() 258 qemu_mutex_init(&sem->mutex); in qemu_sem_init() 275 qemu_mutex_lock(&sem->mutex); in qemu_sem_post() [all …]
|
H A D | trace-events | 42 qemu_co_mutex_lock_uncontended(void *mutex, void *self) "mutex %p self %p" 43 qemu_co_mutex_lock_entry(void *mutex, void *self) "mutex %p self %p" 44 qemu_co_mutex_lock_return(void *mutex, void *self) "mutex %p self %p" 45 qemu_co_mutex_unlock_entry(void *mutex, void *self) "mutex %p self %p" 46 qemu_co_mutex_unlock_return(void *mutex, void *self) "mutex %p self %p" 80 qemu_mutex_lock(void *mutex, const char *file, const int line) "waiting on mutex %p (%s:%d)" 81 qemu_mutex_locked(void *mutex, const char *file, const int line) "taken mutex %p (%s:%d)" 82 qemu_mutex_unlock(void *mutex, const char *file, const int line) "released mutex %p (%s:%d)"
|
H A D | lockcnt.c | 299 qemu_mutex_init(&lockcnt->mutex); in qemu_lockcnt_init() 305 qemu_mutex_destroy(&lockcnt->mutex); in qemu_lockcnt_destroy() 381 qemu_mutex_lock(&lockcnt->mutex); in qemu_lockcnt_lock() 387 qemu_mutex_unlock(&lockcnt->mutex); in qemu_lockcnt_inc_and_unlock() 392 qemu_mutex_unlock(&lockcnt->mutex); in qemu_lockcnt_unlock()
|
H A D | thread-context.c | 298 qemu_mutex_init(&tc->mutex); in thread_context_instance_init() 312 qemu_mutex_destroy(&tc->mutex); in thread_context_instance_finalize() 347 qemu_mutex_lock(&tc->mutex); in type_init() 355 qemu_mutex_unlock(&tc->mutex); in type_init()
|
/qemu/include/qemu/ |
H A D | thread.h | 26 void qemu_mutex_init(QemuMutex *mutex); 27 void qemu_mutex_destroy(QemuMutex *mutex); 114 #define qemu_mutex_unlock(mutex) \ argument 117 #define qemu_rec_mutex_unlock(mutex) \ argument 122 qemu_mutex_lock(mutex); 127 return qemu_mutex_trylock(mutex); 132 qemu_mutex_unlock(mutex); 137 qemu_rec_mutex_lock(mutex); 147 qemu_rec_mutex_unlock(mutex); 167 qemu_cond_wait(cond, mutex); [all …]
|
H A D | coroutine-core.h | 140 void qemu_co_mutex_init(CoMutex *mutex); 146 void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex); 152 void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex);
|
H A D | coroutine.h | 74 static inline coroutine_fn void qemu_co_mutex_assert_locked(CoMutex *mutex) in qemu_co_mutex_assert_locked() argument 83 assert(qatomic_read(&mutex->locked) && in qemu_co_mutex_assert_locked() 84 mutex->holder == qemu_coroutine_self()); in qemu_co_mutex_assert_locked() 173 CoMutex mutex; member
|
H A D | lockable.h | 56 QML_FUNC_(mutex) 87 QemuMutex *: qemu_make_lockable(x, QML_OBJ_(x, mutex)), \ 103 QemuMutex *: QML_OBJ_(x, mutex), \
|
/qemu/scripts/ |
H A D | analyse-locks-simpletrace.py | 22 def _get_mutex(self, mutex): argument 23 if not mutex in self.mutex_records: 24 self.mutex_records[mutex] = {"locks": 0, 32 return self.mutex_records[mutex] 34 def qemu_mutex_lock(self, timestamp, mutex, filename, line): argument 36 rec = self._get_mutex(mutex) 41 def qemu_mutex_locked(self, timestamp, mutex, filename, line): argument 43 rec = self._get_mutex(mutex) 50 def qemu_mutex_unlock(self, timestamp, mutex, filename, line): argument 52 rec = self._get_mutex(mutex)
|
/qemu/docs/spin/ |
H A D | tcg-exclusive.promela | 27 // If the mutex is used, it's also cheap (300 MB / 4 seconds) for 3 CPUs 70 mutex_t mutex; 80 :: pending_cpus -> COND_WAIT(exclusive_resume, mutex); \ 85 MUTEX_LOCK(mutex); \ 102 :: pending_cpus > 1 -> COND_WAIT(exclusive_cond, mutex); \ 105 MUTEX_UNLOCK(mutex); 108 MUTEX_LOCK(mutex); \ 111 MUTEX_UNLOCK(mutex); 119 MUTEX_UNLOCK(mutex); 134 MUTEX_UNLOCK(mutex); [all …]
|
/qemu/nbd/ |
H A D | client-connection.c | 43 QemuMutex mutex; member 102 qemu_mutex_init(&conn->mutex); in nbd_client_connection_new() 179 qemu_mutex_lock(&conn->mutex); in connect_thread_func() 186 qemu_mutex_unlock(&conn->mutex); in connect_thread_func() 204 qemu_mutex_lock(&conn->mutex); in connect_thread_func() 222 qemu_mutex_lock(&conn->mutex); in connect_thread_func() 240 qemu_mutex_unlock(&conn->mutex); in connect_thread_func() 257 WITH_QEMU_LOCK_GUARD(&conn->mutex) { in nbd_client_connection_release() 301 WITH_QEMU_LOCK_GUARD(&conn->mutex) { in nbd_co_establish_connection() 351 WITH_QEMU_LOCK_GUARD(&conn->mutex) { in nbd_co_establish_connection() [all …]
|
/qemu/ui/ |
H A D | vnc-jobs.h | 45 return qemu_mutex_trylock(&vd->mutex); in vnc_trylock_display() 50 qemu_mutex_lock(&vd->mutex); in vnc_lock_display() 55 qemu_mutex_unlock(&vd->mutex); in vnc_unlock_display()
|
H A D | vnc-jobs.c | 58 QemuMutex mutex; member 74 qemu_mutex_lock(&queue->mutex); in vnc_lock_queue() 79 qemu_mutex_unlock(&queue->mutex); in vnc_unlock_queue() 139 qemu_cond_wait(&queue->cond, &queue->mutex); in vnc_jobs_join() 248 qemu_cond_wait(&queue->cond, &queue->mutex); in vnc_worker_thread_loop() 343 qemu_mutex_init(&queue->mutex); in vnc_queue_init() 351 qemu_mutex_destroy(&queue->mutex); in vnc_queue_clear()
|
/qemu/block/ |
H A D | curl.c | 119 QemuMutex mutex; member 416 qemu_mutex_lock(&s->mutex); in curl_multi_do() 419 qemu_mutex_unlock(&s->mutex); in curl_multi_do() 431 qemu_mutex_lock(&s->mutex); in curl_multi_timeout_do() 435 qemu_mutex_unlock(&s->mutex); in curl_multi_timeout_do() 708 qemu_mutex_init(&s->mutex); in curl_open() 790 qemu_mutex_lock(&s->mutex); in curl_open() 792 qemu_mutex_unlock(&s->mutex); in curl_open() 855 qemu_mutex_lock(&s->mutex); in curl_open() 857 qemu_mutex_unlock(&s->mutex); in curl_open() [all …]
|
H A D | blklogwrites.c | 69 QemuMutex mutex; member 197 qemu_mutex_init(&s->mutex); in blk_log_writes_open() 288 qemu_mutex_destroy(&s->mutex); in blk_log_writes_open() 303 qemu_mutex_destroy(&s->mutex); in blk_log_writes_close() 373 qemu_mutex_lock(&s->mutex); in blk_log_writes_co_do_log() 384 qemu_mutex_unlock(&s->mutex); in blk_log_writes_co_do_log() 419 WITH_QEMU_LOCK_GUARD(&s->mutex) { in blk_log_writes_co_do_log() 426 &s->mutex, wait_flags); in blk_log_writes_co_do_log() 453 qemu_mutex_lock(&s->mutex); in blk_log_writes_co_do_log() 456 qemu_mutex_unlock(&s->mutex); in blk_log_writes_co_do_log()
|
H A D | iscsi.c | 76 QemuMutex mutex; member 404 qemu_mutex_lock(&iscsilun->mutex); in iscsi_process_read() 416 qemu_mutex_lock(&iscsilun->mutex); in iscsi_process_write() 628 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_writev() 728 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_block_status() 860 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_readv() 927 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_flush() 1088 qemu_mutex_lock(&iscsilun->mutex); in iscsi_aio_ioctl() 1171 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_pdiscard() 1256 qemu_mutex_lock(&iscsilun->mutex); in iscsi_co_pwrite_zeroes() [all …]
|
H A D | nfs.c | 61 QemuMutex mutex; member 208 qemu_mutex_lock(&client->mutex); in nfs_process_read() 211 qemu_mutex_unlock(&client->mutex); in nfs_process_read() 218 qemu_mutex_lock(&client->mutex); in nfs_process_write() 221 qemu_mutex_unlock(&client->mutex); in nfs_process_write() 273 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_preadv() 319 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_pwritev() 353 WITH_QEMU_LOCK_GUARD(&client->mutex) { in nfs_co_flush() 389 qemu_mutex_lock(&client->mutex); in nfs_client_close() 404 qemu_mutex_destroy(&client->mutex); in nfs_client_close() [all …]
|
/qemu/docs/devel/ |
H A D | lockcnt.txt | 80 A QemuLockCnt comprises both a counter and a mutex; it has primitives 82 mutex. The counter notes how many visits to the data structures are 85 governing the counter/mutex pair then are the following: 88 counter is zero and the mutex is taken. 91 mutex is taken. 93 Most of the time, the mutex protects all writes to the data structure, 96 Reads, instead, can be done without taking the mutex, as long as the 104 mutex, for example: 146 and the mutex in a single word, making the fast path no more expensive 152 Using the same mutex for frees and writes can still incur some small [all …]
|
/qemu/backends/ |
H A D | cryptodev-lkcf.c | 88 QemuMutex mutex; member 239 qemu_mutex_init(&lkcf->mutex); in cryptodev_lkcf_init() 259 qemu_mutex_lock(&lkcf->mutex); in cryptodev_lkcf_cleanup() 261 qemu_mutex_unlock(&lkcf->mutex); in cryptodev_lkcf_cleanup() 283 qemu_mutex_destroy(&lkcf->mutex); in cryptodev_lkcf_cleanup() 450 qemu_mutex_lock(&backend->mutex); in cryptodev_lkcf_worker() 452 qemu_cond_wait(&backend->cond, &backend->mutex); in cryptodev_lkcf_worker() 458 qemu_mutex_unlock(&backend->mutex); in cryptodev_lkcf_worker() 501 qemu_mutex_lock(&lkcf->mutex); in cryptodev_lkcf_operation() 503 qemu_mutex_unlock(&lkcf->mutex); in cryptodev_lkcf_operation()
|
/qemu/crypto/ |
H A D | block.c | 60 qemu_mutex_init(&block->mutex); in qcrypto_block_open() 95 qemu_mutex_init(&block->mutex); in qcrypto_block_create() 239 WITH_QEMU_LOCK_GUARD(&block->mutex) { in qcrypto_block_pop_cipher() 255 QEMU_LOCK_GUARD(&block->mutex); in qcrypto_block_push_cipher() 363 qemu_mutex_destroy(&block->mutex); in qcrypto_block_free() 471 &block->mutex, sectorsize, offset, buf, in qcrypto_block_decrypt_helper() 493 &block->mutex, sectorsize, offset, buf, in qcrypto_block_encrypt_helper()
|
/qemu/scripts/qemugdb/ |
H A D | tcg.py | 34 mutex = gdb.parse_and_eval("mutex") 37 (mutex, owner))
|
/qemu/tests/unit/ |
H A D | test-aio-multithread.c | 388 static QemuMutex mutex; variable 393 qemu_mutex_lock(&mutex); in test_multi_mutex_entry() 395 qemu_mutex_unlock(&mutex); in test_multi_mutex_entry() 405 qemu_mutex_init(&mutex); in test_multi_mutex()
|