From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Hering Subject: ioctl handling in netbsd_privcmd_hypercall() Date: Wed, 18 Jan 2012 17:21:22 +0100 Message-ID: <20120118162122.GA14232@aepfle.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org I was looking at the slightly broken error handling in the new xc_mem_paging_load() function and stumbled over the ioctl() handling in netbsd_privcmd_hypercall(). Is ioctl() on NetBSD special? I would have expected it returns -1 on error and the caller can deal with errno if it actually wants to. But instead it returns the negative errno value or what the hypervisor returned. static int netbsd_privcmd_hypercall(xc_interface *xch, xc_osdep_handle h, privcmd_hypercall_t *hypercall) { int fd = (int)h; int error = ioctl(fd, IOCTL_PRIVCMD_HYPERCALL, hypercall); if (error < 0) return -errno; else return hypercall->retval; } I think do_domctl() is supposed to return -1 on error and let the caller decide what to do. At least thats how its appearently done on Linux and Solaris. Olaf