Date: Mon, 18 Jan 2010 22:46:06 +0000 (UTC) From: "Wojciech A. Koszek" <wkoszek@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r202598 - head/sys/compat/linux Message-ID: <201001182246.o0IMk6dw000346@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001182246.o0IMk6dw000346>