1. 01 3月, 2013 1 次提交
  2. 24 2月, 2013 1 次提交
    • P
      Replace all setjmp()/longjmp() with sigsetjmp()/siglongjmp() · 6ab7e546
      Peter Maydell 提交于
      The setjmp() function doesn't specify whether signal masks are saved and
      restored; on Linux they are not, but on BSD (including MacOSX) they are.
      We want to have consistent behaviour across platforms, so we should
      always use "don't save/restore signal mask" (this is also generally
      going to be faster). This also works around a bug in MacOSX where the
      signal-restoration on longjmp() affects the signal mask for a completely
      different thread, not just the mask for the thread which did the longjmp.
      The most visible effect of this was that ctrl-C was ignored on MacOSX
      because the CPU thread did a longjmp which resulted in its signal mask
      being applied to every thread, so that all threads had SIGINT and SIGTERM
      blocked.
      
      The POSIX-sanctioned portable way to do a jump without affecting signal
      masks is to siglongjmp() to a sigjmp_buf which was created by calling
      sigsetjmp() with a zero savemask parameter, so change all uses of
      setjmp()/longjmp() accordingly. [Technically POSIX allows sigsetjmp(buf, 0)
      to save the signal mask; however the following siglongjmp() must not
      restore the signal mask, so the pair can be effectively considered as
      "sigjmp/longjmp which don't touch the mask".]
      
      For Windows we provide a trivial sigsetjmp/siglongjmp in terms of
      setjmp/longjmp -- this is OK because no user will ever pass a non-zero
      savemask.
      
      The setjmp() uses in tests/tcg/test-i386.c and tests/tcg/linux-test.c
      are left untouched because these are self-contained singlethreaded
      test programs intended to be run under QEMU's Linux emulation, so they
      have neither the portability nor the multithreading issues to deal with.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Tested-by: NStefan Weil <sw@weilnetz.de>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
      6ab7e546
  3. 16 2月, 2013 4 次提交
  4. 17 1月, 2013 5 次提交
  5. 15 1月, 2013 2 次提交
  6. 13 1月, 2013 1 次提交
  7. 11 1月, 2013 1 次提交
  8. 19 12月, 2012 10 次提交
  9. 17 12月, 2012 1 次提交
  10. 31 10月, 2012 1 次提交
  11. 24 10月, 2012 4 次提交
  12. 23 10月, 2012 1 次提交
    • A
      Rename target_phys_addr_t to hwaddr · a8170e5e
      Avi Kivity 提交于
      target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
      reserved) and its purpose doesn't match the name (most target_phys_addr_t
      addresses are not target specific).  Replace it with a finger-friendly,
      standards conformant hwaddr.
      
      Outstanding patchsets can be fixed up with the command
      
        git rebase -i --exec 'find -name "*.[ch]"
                              | xargs s/target_phys_addr_t/hwaddr/g' origin
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      a8170e5e
  13. 05 10月, 2012 2 次提交
  14. 29 9月, 2012 1 次提交
    • P
      block: introduce block job error · 32c81a4a
      Paolo Bonzini 提交于
      The following behaviors are possible:
      
      'report': The behavior is the same as in 1.1.  An I/O error,
      respectively during a read or a write, will complete the job immediately
      with an error code.
      
      'ignore': An I/O error, respectively during a read or a write, will be
      ignored.  For streaming, the job will complete with an error and the
      backing file will be left in place.  For mirroring, the sector will be
      marked again as dirty and re-examined later.
      
      'stop': The job will be paused and the job iostatus will be set to
      failed or nospace, while the VM will keep running.  This can only be
      specified if the block device has rerror=stop and werror=stop or enospc.
      
      'enospc': Behaves as 'stop' for ENOSPC errors, 'report' for others.
      
      In all cases, even for 'report', the I/O error is reported as a QMP
      event BLOCK_JOB_ERROR, with the same arguments as BLOCK_IO_ERROR.
      
      It is possible that while stopping the VM a BLOCK_IO_ERROR event will be
      reported and will clobber the event from BLOCK_JOB_ERROR, or vice versa.
      This is not really avoidable since stopping the VM completes all pending
      I/O requests.  In fact, it is already possible now that a series of
      BLOCK_IO_ERROR events are reported with rerror=stop, because vm_stop
      calls bdrv_drain_all and this can generate further errors.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      32c81a4a
  15. 26 9月, 2012 2 次提交
  16. 07 9月, 2012 1 次提交
  17. 06 9月, 2012 2 次提交