On 08/11/2016 08:24 AM, Alex Bennée wrote:
+    if (mr->global_locking) {
+        qemu_mutex_lock_iothread();
+        locked = true;
+    }
     memory_region_dispatch_read(mr, physaddr, &val, 1 << SHIFT,
                                 iotlbentry->attrs);
+    if (locked) {
+        qemu_mutex_unlock_iothread();
+    }

I'm not keen on this pattern.

(1) Why not use recursive locks?

(2) If there's a good reason why not, then perhaps

  if (mr->global_locking) {
    qemu_mutex_lock_iothread();
    do_something;
    qemu_mutex_unlock_iothread();
  } else {
    do_something;
  }

is a better pattern to use.


r~

Reply via email to