Files
xen/tools/libxl/libxl_osdeps.h
T
Olaf Hering 796dea37fb tools: include sys/sysmacros.h on Linux
Due to a bug in the glibc headers the macros makedev(), major() and
minor() where avaialble by including sys/types.h. This bug was
addressed in glibc-2.25 by introducing a warning when these macros are
used. Since Xen is build with -Werror this new warning cause a compile
error.

Use sys/sysmacros.h to define these three macros.

blktap2 is already Linux specific. The kernel header which was used to
get makedev() does not provided it anymore, and it was wrong to use a
kernel header anyway.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Wei Liu <wei.liu2@citrix.com>
2017-03-15 10:22:33 +00:00

131 lines
3.4 KiB
C

/*
* Copyright (C) 2009 Citrix Ltd.
* Author Stefano Stabellini <stefano.stabellini@eu.citrix.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; version 2.1 only. with the special
* exception on linking described in file LICENSE.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*/
/*
* This header must be included first, before any system headers,
* so that _GNU_SOURCE takes effect properly.
*/
#ifndef LIBXL_OSDEP
#define LIBXL_OSDEP
#define _GNU_SOURCE
#if defined(__NetBSD__)
#define SYSFS_USB_DEV "/sys/bus/usb/devices"
#define SYSFS_USBBACK_DRIVER "/kern/xen/usb"
#define SYSFS_PCI_DEV "/sys/bus/pci/devices"
#define SYSFS_PCIBACK_DRIVER "/kern/xen/pci"
#define NETBACK_NIC_NAME "xvif%ui%d"
#include <util.h>
#include <uuid.h>
#elif defined(__OpenBSD__)
#include <util.h>
#elif defined(__linux__)
#define SYSFS_USB_DEV "/sys/bus/usb/devices"
#define SYSFS_USBBACK_DRIVER "/sys/bus/usb/drivers/usbback"
#define SYSFS_PCI_DEV "/sys/bus/pci/devices"
#define SYSFS_PCIBACK_DRIVER "/sys/bus/pci/drivers/pciback"
#define NETBACK_NIC_NAME "vif%u.%d"
#include <sys/sysmacros.h>
#include <pty.h>
#include <uuid/uuid.h>
#elif defined(__sun__)
#include <stropts.h>
#elif defined(__FreeBSD__)
#define SYSFS_USB_DEV "/dev/null"
#define SYSFS_USBBACK_DRIVER "/dev/null"
#define SYSFS_PCI_DEV "/dev/null"
#define SYSFS_PCIBACK_DRIVER "/dev/null"
#define NETBACK_NIC_NAME "xnb%u.%d"
#include <libutil.h>
#include <sys/endian.h>
#include <uuid.h>
/*
* FreeBSD doesn't have ENODATA errno ATM, so privcmd always translates
* ENODATA into ENOENT.
*/
#ifndef ENODATA
#define ENODATA ENOENT
#endif
#endif
#ifndef SYSFS_USBBACK_DRIVER
#error define SYSFS_USBBACK_DRIVER for your platform
#endif
#ifndef SYSFS_USB_DEV
#error define SYSFS_USB_DEV for your platform
#endif
#ifndef SYSFS_PCIBACK_DRIVER
#error define SYSFS_PCIBACK_DRIVER for your platform
#endif
#ifndef SYSFS_PCI_DEV
#error define SYSFS_PCI_DEV for your platform
#endif
#ifdef NEED_OWN_ASPRINTF
#include <stdarg.h>
int asprintf(char **buffer, char *fmt, ...);
int vasprintf(char **buffer, const char *fmt, va_list ap);
#endif /*NEED_OWN_ASPRINTF*/
#ifndef htobe32 /* glibc < 2.9 */
# include <byteswap.h>
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define htobe16(x) __bswap_16(x)
# define htole16(x) (x)
# define be16toh(x) __bswap_16(x)
# define le16toh(x) (x)
# define htobe32(x) __bswap_32(x)
# define htole32(x) (x)
# define be32toh(x) __bswap_32(x)
# define le32toh(x) (x)
# define htobe64(x) __bswap_64(x)
# define htole64(x) (x)
# define be64toh(x) __bswap_64(x)
# define le64toh(x) (x)
# else
# define htobe16(x) (x)
# define htole16(x) __bswap_16(x)
# define be16toh(x) (x)
# define le16toh(x) __bswap_16(x)
# define htobe32(x) (x)
# define htole32(x) __bswap_32(x)
# define be32toh(x) (x)
# define le32toh(x) __bswap_32(x)
# define htobe64(x) (x)
# define htole64(x) __bswap_64(x)
# define be64toh(x) (x)
# define le64toh(x) __bswap_64(x)
# endif
#endif
#endif
/*
* Local variables:
* mode: C
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/