svn commit: r367278 - head/sys/compat/linux

Conrad Meyer cem at FreeBSD.org
Mon Nov 2 18:45:16 UTC 2020


Author: cem
Date: Mon Nov  2 18:45:15 2020
New Revision: 367278
URL: https://svnweb.freebsd.org/changeset/base/367278

Log:
  linux(4): Deduplicate ioctl range construction with a helper macro
  
  No functional change.
  
  Reviewed by:	emaste, trasz
  Differential Revision:	https://reviews.freebsd.org/D27049

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 Nov  2 18:23:50 2020	(r367277)
+++ head/sys/compat/linux/linux_ioctl.c	Mon Nov  2 18:45:15 2020	(r367278)
@@ -102,70 +102,35 @@ __FBSDID("$FreeBSD$");
 
 CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ);
 
-static linux_ioctl_function_t linux_ioctl_cdrom;
-static linux_ioctl_function_t linux_ioctl_vfat;
-static linux_ioctl_function_t linux_ioctl_console;
-static linux_ioctl_function_t linux_ioctl_hdio;
-static linux_ioctl_function_t linux_ioctl_disk;
-static linux_ioctl_function_t linux_ioctl_socket;
-static linux_ioctl_function_t linux_ioctl_sound;
-static linux_ioctl_function_t linux_ioctl_termio;
-static linux_ioctl_function_t linux_ioctl_private;
-static linux_ioctl_function_t linux_ioctl_drm;
-static linux_ioctl_function_t linux_ioctl_sg;
-static linux_ioctl_function_t linux_ioctl_v4l;
-static linux_ioctl_function_t linux_ioctl_v4l2;
-static linux_ioctl_function_t linux_ioctl_special;
-static linux_ioctl_function_t linux_ioctl_fbsd_usb;
-static linux_ioctl_function_t linux_ioctl_evdev;
-static linux_ioctl_function_t linux_ioctl_kcov;
+#define	DEFINE_LINUX_IOCTL_SET(shortname, SHORTNAME)		\
+static linux_ioctl_function_t linux_ioctl_ ## shortname;	\
+static struct linux_ioctl_handler shortname ## _handler = {	\
+	.func = linux_ioctl_ ## shortname,			\
+	.low = LINUX_IOCTL_ ## SHORTNAME ## _MIN,		\
+	.high = LINUX_IOCTL_ ## SHORTNAME ## _MAX,		\
+};								\
+DATA_SET(linux_ioctl_handler_set, shortname ## _handler)
 
-static struct linux_ioctl_handler cdrom_handler =
-{ linux_ioctl_cdrom, LINUX_IOCTL_CDROM_MIN, LINUX_IOCTL_CDROM_MAX };
-static struct linux_ioctl_handler vfat_handler =
-{ linux_ioctl_vfat, LINUX_IOCTL_VFAT_MIN, LINUX_IOCTL_VFAT_MAX };
-static struct linux_ioctl_handler console_handler =
-{ linux_ioctl_console, LINUX_IOCTL_CONSOLE_MIN, LINUX_IOCTL_CONSOLE_MAX };
-static struct linux_ioctl_handler hdio_handler =
-{ linux_ioctl_hdio, LINUX_IOCTL_HDIO_MIN, LINUX_IOCTL_HDIO_MAX };
-static struct linux_ioctl_handler disk_handler =
-{ linux_ioctl_disk, LINUX_IOCTL_DISK_MIN, LINUX_IOCTL_DISK_MAX };
-static struct linux_ioctl_handler socket_handler =
-{ linux_ioctl_socket, LINUX_IOCTL_SOCKET_MIN, LINUX_IOCTL_SOCKET_MAX };
-static struct linux_ioctl_handler sound_handler =
-{ linux_ioctl_sound, LINUX_IOCTL_SOUND_MIN, LINUX_IOCTL_SOUND_MAX };
-static struct linux_ioctl_handler private_handler =
-{ linux_ioctl_private, LINUX_IOCTL_PRIVATE_MIN, LINUX_IOCTL_PRIVATE_MAX };
-static struct linux_ioctl_handler drm_handler =
-{ linux_ioctl_drm, LINUX_IOCTL_DRM_MIN, LINUX_IOCTL_DRM_MAX };
-static struct linux_ioctl_handler sg_handler =
-{ 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 video2_handler =
-{ linux_ioctl_v4l2, LINUX_IOCTL_VIDEO2_MIN, LINUX_IOCTL_VIDEO2_MAX };
-static struct linux_ioctl_handler fbsd_usb =
-{ linux_ioctl_fbsd_usb, FBSD_LUSB_MIN, FBSD_LUSB_MAX };
-static struct linux_ioctl_handler evdev_handler =
-{ linux_ioctl_evdev, LINUX_IOCTL_EVDEV_MIN, LINUX_IOCTL_EVDEV_MAX };
-static struct linux_ioctl_handler kcov_handler =
-{ linux_ioctl_kcov, LINUX_KCOV_MIN, LINUX_KCOV_MAX };
+DEFINE_LINUX_IOCTL_SET(cdrom, CDROM);
+DEFINE_LINUX_IOCTL_SET(vfat, VFAT);
+DEFINE_LINUX_IOCTL_SET(console, CONSOLE);
+DEFINE_LINUX_IOCTL_SET(hdio, HDIO);
+DEFINE_LINUX_IOCTL_SET(disk, DISK);
+DEFINE_LINUX_IOCTL_SET(socket, SOCKET);
+DEFINE_LINUX_IOCTL_SET(sound, SOUND);
+DEFINE_LINUX_IOCTL_SET(termio, TERMIO);
+DEFINE_LINUX_IOCTL_SET(private, PRIVATE);
+DEFINE_LINUX_IOCTL_SET(drm, DRM);
+DEFINE_LINUX_IOCTL_SET(sg, SG);
+DEFINE_LINUX_IOCTL_SET(v4l, VIDEO);
+DEFINE_LINUX_IOCTL_SET(v4l2, VIDEO2);
+DEFINE_LINUX_IOCTL_SET(fbsd_usb, FBSD_LUSB);
+DEFINE_LINUX_IOCTL_SET(evdev, EVDEV);
+DEFINE_LINUX_IOCTL_SET(kcov, KCOV);
 
-DATA_SET(linux_ioctl_handler_set, cdrom_handler);
-DATA_SET(linux_ioctl_handler_set, vfat_handler);
-DATA_SET(linux_ioctl_handler_set, console_handler);
-DATA_SET(linux_ioctl_handler_set, hdio_handler);
-DATA_SET(linux_ioctl_handler_set, disk_handler);
-DATA_SET(linux_ioctl_handler_set, socket_handler);
-DATA_SET(linux_ioctl_handler_set, sound_handler);
-DATA_SET(linux_ioctl_handler_set, private_handler);
-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, video2_handler);
-DATA_SET(linux_ioctl_handler_set, fbsd_usb);
-DATA_SET(linux_ioctl_handler_set, evdev_handler);
-DATA_SET(linux_ioctl_handler_set, kcov_handler);
+#undef DEFINE_LINUX_IOCTL_SET
+
+static int linux_ioctl_special(struct thread *, struct linux_ioctl_args *);
 
 /*
  * Keep sorted by low.

Modified: head/sys/compat/linux/linux_ioctl.h
==============================================================================
--- head/sys/compat/linux/linux_ioctl.h	Mon Nov  2 18:23:50 2020	(r367277)
+++ head/sys/compat/linux/linux_ioctl.h	Mon Nov  2 18:45:15 2020	(r367278)
@@ -747,8 +747,8 @@
 #define	FBSD_LUSB_GET_POWER_USAGE	0xffdd
 #define	FBSD_LUSB_DEVICESTATS		0xffdc
 
-#define	FBSD_LUSB_MAX			0xffff
-#define	FBSD_LUSB_MIN			0xffdc
+#define	LINUX_IOCTL_FBSD_LUSB_MAX	0xffff
+#define	LINUX_IOCTL_FBSD_LUSB_MIN	0xffdc
 
 /*
  * Linux btrfs clone operation
@@ -767,8 +767,8 @@
 /*
  * kcov(4) shims
  */
-#define	LINUX_KCOV_MIN			0x6300
-#define	LINUX_KCOV_MAX			0x63ff
+#define	LINUX_IOCTL_KCOV_MIN		0x6300
+#define	LINUX_IOCTL_KCOV_MAX		0x63ff
 #define	LINUX_KCOV_INIT_TRACE		0x6301
 #define	LINUX_KCOV_ENABLE		0x6364
 #define	LINUX_KCOV_DISABLE		0x6365


More information about the svn-src-head mailing list