On Tue, Apr 15, 2014 at 10:33:08AM +0200, Roger Pau Monne wrote: > ENODATA doesn't exist on FreeBSD, so ENODATA errors returned by the > hypervisor are translated to ENOENT. > > Also, the error code is returned in errno if the call returns -1, so > compare the error code with the value in errno instead of the value > returned by the function.
But in xenctrl.h, the comment on the prototype of the function says that it return the error code, there is nothing about errno been updated. So I think rc should still be check for the error code instead of errno. > Signed-off-by: Roger Pau Monné <roger....@citrix.com> > Cc: xen-de...@lists.xenproject.org > Cc: Stefano Stabellini <stefano.stabell...@eu.citrix.com> > Cc: Anthony Perard <anthony.per...@citrix.com> > --- > xen-all.c | 8 ++++++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/xen-all.c b/xen-all.c > index 0b4d934..4026b7b 100644 > --- a/xen-all.c > +++ b/xen-all.c > @@ -499,11 +499,15 @@ static void xen_sync_dirty_bitmap(XenIOState *state, > start_addr >> TARGET_PAGE_BITS, npages, > bitmap); > if (rc < 0) { > - if (rc != -ENODATA) { > +#ifdef ENODATA > + if (errno == ENODATA) { > +#else > + if (errno == ENOENT) { > +#endif > memory_region_set_dirty(framebuffer, 0, size); > DPRINTF("xen: track_dirty_vram failed (0x" TARGET_FMT_plx > ", 0x" TARGET_FMT_plx "): %s\n", > - start_addr, start_addr + size, strerror(-rc)); > + start_addr, start_addr + size, strerror(errno)); > } > return; > } > -- > 1.7.7.5 (Apple Git-26) > -- Anthony PERARD