Prefer using the character device over the proc file if the character
device exists. This follows similar conversions of xenbus to avoid
issues with FMODE_ATOMIC_POS added in Linux 3.14 and newer.
CC: Ian Jackson <ian.jackson@eu.citrix.com>
CC: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
CC: Ian Campbell <ian.campbell@citrix.com>
CC: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
static xc_osdep_handle linux_privcmd_open(xc_interface *xch)
{
int flags, saved_errno;
- int fd = open("/proc/xen/privcmd", O_RDWR);
+ int fd = open("/dev/xen/privcmd", O_RDWR); /* prefer this newer interface */
+
+ if ( fd == -1 && ( errno == ENOENT || errno == ENXIO || errno == ENODEV ))
+ {
+ /* Fallback to /proc/xen/privcmd */
+ fd = open("/proc/xen/privcmd", O_RDWR);
+ }
if ( fd == -1 )
{