static void test_rwlock5 (void) { static GRWLock lock; gboolean ret; ret = g_rw_lock_reader_trylock (&lock); g_assert (ret); ret = g_rw_lock_reader_trylock (&lock); g_assert (ret); g_rw_lock_reader_unlock (&lock); g_rw_lock_reader_unlock (&lock); }
void fu_mutex_lock_dbg (FuMutex *self, FuMutexAccess kind, const gchar *strloc, const gchar *strfunc) { g_debug ("LOCK \t%s\t%s\t%s\t%s", self->id, kind == FU_MUTEX_ACCESS_READ ? "READ" : "WRITE", strloc, strfunc); if (kind == FU_MUTEX_ACCESS_READ) { if (!g_rw_lock_reader_trylock (&self->rw_lock)) { g_debug ("failed to read lock, write lock held by %s", self->writer->str); } g_string_printf (self->reader, "%s:%s", strloc, strfunc); } else { if (!g_rw_lock_writer_trylock (&self->rw_lock)) { g_debug ("failed to write lock, read lock held by %s, " "write lock held by %s", self->reader->str, self->writer->str); } g_string_printf (self->writer, "%s:%s", strloc, strfunc); } }