svn commit: r202598 - head/sys/compat/linux
Wojciech A. Koszek
wkoszek at FreeBSD.org
Mon Jan 18 22:46:07 UTC 2010
Author: wkoszek
Date: Mon Jan 18 22:46:06 2010
New Revision: 202598
URL: http://svn.freebsd.org/changeset/base/202598
Log:
Let us to use our libusb(3) in Linuxolator.
With this change, Linux binaries can work with our libusb(3) when
it's compiled against our header files on GNU/Linux system -- this
solves the problem with differences between /dev layouts.
With ported libusb(3), I am able to use my USB JTAG cable with Linux
binaries that support it.
Reviewed by: thompsa
Modified:
head/sys/compat/linux/linux_ioctl.c
head/sys/compat/linux/linux_ioctl.h
Modified: head/sys/compat/linux/linux_ioctl.c
==============================================================================
--- head/sys/compat/linux/linux_ioctl.c Mon Jan 18 22:39:33 2010 (r202597)
+++ head/sys/compat/linux/linux_ioctl.c Mon Jan 18 22:46:06 2010 (r202598)
@@ -96,6 +96,7 @@ static linux_ioctl_function_t linux_ioct
static linux_ioctl_function_t linux_ioctl_sg;
static linux_ioctl_function_t linux_ioctl_v4l;
static linux_ioctl_function_t linux_ioctl_special;
+static linux_ioctl_function_t linux_ioctl_fbsd_usb;
static struct linux_ioctl_handler cdrom_handler =
{ linux_ioctl_cdrom, LINUX_IOCTL_CDROM_MIN, LINUX_IOCTL_CDROM_MAX };
@@ -121,6 +122,8 @@ static struct linux_ioctl_handler sg_han
{ linux_ioctl_sg, LINUX_IOCTL_SG_MIN, LINUX_IOCTL_SG_MAX };
static struct linux_ioctl_handler video_handler =
{ linux_ioctl_v4l, LINUX_IOCTL_VIDEO_MIN, LINUX_IOCTL_VIDEO_MAX };
+static struct linux_ioctl_handler fbsd_usb =
+{ linux_ioctl_fbsd_usb, LINUX_FBSD_USB_MIN, LINUX_FBSD_USB_MAX };
DATA_SET(linux_ioctl_handler_set, cdrom_handler);
DATA_SET(linux_ioctl_handler_set, vfat_handler);
@@ -134,6 +137,7 @@ DATA_SET(linux_ioctl_handler_set, privat
DATA_SET(linux_ioctl_handler_set, drm_handler);
DATA_SET(linux_ioctl_handler_set, sg_handler);
DATA_SET(linux_ioctl_handler_set, video_handler);
+DATA_SET(linux_ioctl_handler_set, fbsd_usb);
struct handler_element
{
@@ -2960,6 +2964,24 @@ linux_ioctl_special(struct thread *td, s
}
/*
+ * Support for mounting our devfs under /compat/linux/dev and using
+ * our libusb(3) compiled on Linux to access it from within Linuxolator
+ * environment.
+ */
+static int
+linux_ioctl_fbsd_usb(struct thread *td, struct linux_ioctl_args *args)
+{
+
+ /*
+ * Because on GNU/Linux we build our libusb(3) with our header
+ * files and ioccom.h macros, ioctl() will contain our native
+ * command value. This means that we can basically redirect this
+ * call further.
+ */
+ return (ioctl(td, (struct ioctl_args *)args));
+}
+
+/*
* main ioctl syscall function
*/
Modified: head/sys/compat/linux/linux_ioctl.h
==============================================================================
--- head/sys/compat/linux/linux_ioctl.h Mon Jan 18 22:39:33 2010 (r202597)
+++ head/sys/compat/linux/linux_ioctl.h Mon Jan 18 22:46:06 2010 (r202598)
@@ -611,4 +611,10 @@ int linux_ifname(struct ifnet *, char
#define LINUX_IOCTL_VIDEO_MIN LINUX_VIDIOCGCAP
#define LINUX_IOCTL_VIDEO_MAX LINUX_VIDIOCSVBIFMT
+/*
+ * Keep in sync with our include/dev/usb/usb_ioctl.h.
+ */
+#define LINUX_FBSD_USB_MIN 0x5100
+#define LINUX_FBSD_USB_MAX 0x55c7
+
#endif /* !_LINUX_IOCTL_H_ */
More information about the svn-src-all
mailing list