linux-user: KD/VT/FB ioctls
everything needed to run SDL on a framebuffer device in the userspace emulator Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
This commit is contained in:
		
							parent
							
								
									cf6de34aec
								
							
						
					
					
						commit
						f7680a5593
					
				| 
						 | 
					@ -53,7 +53,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     IOCTL(KIOCSOUND, 0, TYPE_INT)
 | 
					     IOCTL(KIOCSOUND, 0, TYPE_INT)
 | 
				
			||||||
     IOCTL(KDMKTONE, 0, TYPE_INT)
 | 
					     IOCTL(KDMKTONE, 0, TYPE_INT)
 | 
				
			||||||
 | 
					     IOCTL(KDSETMODE, 0, TYPE_INT)
 | 
				
			||||||
     IOCTL(KDGKBTYPE, IOC_R, MK_PTR(TYPE_CHAR))
 | 
					     IOCTL(KDGKBTYPE, IOC_R, MK_PTR(TYPE_CHAR))
 | 
				
			||||||
 | 
					     IOCTL(KDGKBMODE, IOC_R, MK_PTR(TYPE_INT))
 | 
				
			||||||
 | 
					     IOCTL(KDSKBMODE, 0, TYPE_INT)
 | 
				
			||||||
     IOCTL(KDGKBENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbentry)))
 | 
					     IOCTL(KDGKBENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbentry)))
 | 
				
			||||||
     IOCTL(KDGKBSENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbsentry)))
 | 
					     IOCTL(KDGKBSENT, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_kbsentry)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -314,3 +317,14 @@
 | 
				
			||||||
  IOCTL(MTIOCTOP, IOC_W, MK_PTR(MK_STRUCT(STRUCT_mtop)))
 | 
					  IOCTL(MTIOCTOP, IOC_W, MK_PTR(MK_STRUCT(STRUCT_mtop)))
 | 
				
			||||||
  IOCTL(MTIOCGET, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtget)))
 | 
					  IOCTL(MTIOCGET, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtget)))
 | 
				
			||||||
  IOCTL(MTIOCPOS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtpos)))
 | 
					  IOCTL(MTIOCPOS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_mtpos)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IOCTL(FBIOGET_FSCREENINFO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_fb_fix_screeninfo)))
 | 
				
			||||||
 | 
					  IOCTL(FBIOGET_VSCREENINFO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_fb_var_screeninfo)))
 | 
				
			||||||
 | 
					  IOCTL(FBIOPUT_VSCREENINFO, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fb_var_screeninfo)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IOCTL(VT_OPENQRY, IOC_R, MK_PTR(TYPE_INT))
 | 
				
			||||||
 | 
					  IOCTL(VT_GETSTATE, IOC_R, MK_PTR(MK_STRUCT(STRUCT_vt_stat)))
 | 
				
			||||||
 | 
					  IOCTL(VT_ACTIVATE, 0, TYPE_INT)
 | 
				
			||||||
 | 
					  IOCTL(VT_WAITACTIVE, 0, TYPE_INT)
 | 
				
			||||||
 | 
					  IOCTL(VT_LOCKSWITCH, 0, TYPE_INT)
 | 
				
			||||||
 | 
					  IOCTL(VT_UNLOCKSWITCH, 0, TYPE_INT)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,8 @@
 | 
				
			||||||
#include <linux/kd.h>
 | 
					#include <linux/kd.h>
 | 
				
			||||||
#include <linux/mtio.h>
 | 
					#include <linux/mtio.h>
 | 
				
			||||||
#include <linux/fs.h>
 | 
					#include <linux/fs.h>
 | 
				
			||||||
 | 
					#include <linux/fb.h>
 | 
				
			||||||
 | 
					#include <linux/vt.h>
 | 
				
			||||||
#include "linux_loop.h"
 | 
					#include "linux_loop.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "qemu.h"
 | 
					#include "qemu.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -660,6 +660,9 @@ struct target_pollfd {
 | 
				
			||||||
#define TARGET_KIOCSOUND       0x4B2F	/* start sound generation (0 for off) */
 | 
					#define TARGET_KIOCSOUND       0x4B2F	/* start sound generation (0 for off) */
 | 
				
			||||||
#define TARGET_KDMKTONE	       0x4B30	/* generate tone */
 | 
					#define TARGET_KDMKTONE	       0x4B30	/* generate tone */
 | 
				
			||||||
#define TARGET_KDGKBTYPE       0x4b33
 | 
					#define TARGET_KDGKBTYPE       0x4b33
 | 
				
			||||||
 | 
					#define TARGET_KDSETMODE       0x4b3a
 | 
				
			||||||
 | 
					#define TARGET_KDGKBMODE       0x4b44
 | 
				
			||||||
 | 
					#define TARGET_KDSKBMODE       0x4b45
 | 
				
			||||||
#define TARGET_KDGKBENT	       0x4B46	/* gets one entry in translation table */
 | 
					#define TARGET_KDGKBENT	       0x4B46	/* gets one entry in translation table */
 | 
				
			||||||
#define TARGET_KDGKBSENT       0x4B48	/* gets one function key string entry */
 | 
					#define TARGET_KDGKBSENT       0x4B48	/* gets one function key string entry */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -874,6 +877,19 @@ struct target_pollfd {
 | 
				
			||||||
#define TARGET_LOOP_GET_STATUS64      0x4C05
 | 
					#define TARGET_LOOP_GET_STATUS64      0x4C05
 | 
				
			||||||
#define TARGET_LOOP_CHANGE_FD         0x4C06
 | 
					#define TARGET_LOOP_CHANGE_FD         0x4C06
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* fb ioctls */
 | 
				
			||||||
 | 
					#define TARGET_FBIOGET_VSCREENINFO    0x4600
 | 
				
			||||||
 | 
					#define TARGET_FBIOPUT_VSCREENINFO    0x4601
 | 
				
			||||||
 | 
					#define TARGET_FBIOGET_FSCREENINFO    0x4602
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* vt ioctls */
 | 
				
			||||||
 | 
					#define TARGET_VT_OPENQRY             0x5600
 | 
				
			||||||
 | 
					#define TARGET_VT_GETSTATE            0x5603
 | 
				
			||||||
 | 
					#define TARGET_VT_ACTIVATE            0x5606
 | 
				
			||||||
 | 
					#define TARGET_VT_WAITACTIVE          0x5607
 | 
				
			||||||
 | 
					#define TARGET_VT_LOCKSWITCH          0x560b
 | 
				
			||||||
 | 
					#define TARGET_VT_UNLOCKSWITCH        0x560c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* from asm/termbits.h */
 | 
					/* from asm/termbits.h */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TARGET_NCC 8
 | 
					#define TARGET_NCC 8
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,3 +114,54 @@ STRUCT(mtop, TYPE_SHORT, TYPE_INT)
 | 
				
			||||||
STRUCT(mtget, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG,
 | 
					STRUCT(mtget, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG, TYPE_LONG,
 | 
				
			||||||
       TYPE_INT, TYPE_INT)
 | 
					       TYPE_INT, TYPE_INT)
 | 
				
			||||||
STRUCT(mtpos, TYPE_LONG)
 | 
					STRUCT(mtpos, TYPE_LONG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRUCT(fb_fix_screeninfo,
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_CHAR, 16), /* id */
 | 
				
			||||||
 | 
					       TYPE_ULONG, /* smem_start */
 | 
				
			||||||
 | 
					       TYPE_INT, /* smem_len */
 | 
				
			||||||
 | 
					       TYPE_INT, /* type */
 | 
				
			||||||
 | 
					       TYPE_INT, /* type_aux */
 | 
				
			||||||
 | 
					       TYPE_INT, /* visual */
 | 
				
			||||||
 | 
					       TYPE_SHORT, /* xpanstep */
 | 
				
			||||||
 | 
					       TYPE_SHORT, /* ypanstep */
 | 
				
			||||||
 | 
					       TYPE_SHORT, /* ywrapstep */
 | 
				
			||||||
 | 
					       TYPE_INT, /* line_length */
 | 
				
			||||||
 | 
					       TYPE_ULONG, /* mmio_start */
 | 
				
			||||||
 | 
					       TYPE_INT, /* mmio_len */
 | 
				
			||||||
 | 
					       TYPE_INT, /* accel */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_CHAR, 3)) /* reserved */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRUCT(fb_var_screeninfo,
 | 
				
			||||||
 | 
					       TYPE_INT, /* xres */
 | 
				
			||||||
 | 
					       TYPE_INT, /* yres */
 | 
				
			||||||
 | 
					       TYPE_INT, /* xres_virtual */
 | 
				
			||||||
 | 
					       TYPE_INT, /* yres_virtual */
 | 
				
			||||||
 | 
					       TYPE_INT, /* xoffset */
 | 
				
			||||||
 | 
					       TYPE_INT, /* yoffset */
 | 
				
			||||||
 | 
					       TYPE_INT, /* bits_per_pixel */
 | 
				
			||||||
 | 
					       TYPE_INT, /* grayscale */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_INT, 3), /* red */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_INT, 3), /* green */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_INT, 3), /* blue */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_INT, 3), /* transp */
 | 
				
			||||||
 | 
					       TYPE_INT, /* nonstd */
 | 
				
			||||||
 | 
					       TYPE_INT, /* activate */
 | 
				
			||||||
 | 
					       TYPE_INT, /* height */
 | 
				
			||||||
 | 
					       TYPE_INT, /* width */
 | 
				
			||||||
 | 
					       TYPE_INT, /* accel_flags */
 | 
				
			||||||
 | 
					       TYPE_INT, /* pixclock */
 | 
				
			||||||
 | 
					       TYPE_INT, /* left_margin */
 | 
				
			||||||
 | 
					       TYPE_INT, /* right_margin */
 | 
				
			||||||
 | 
					       TYPE_INT, /* upper_margin */
 | 
				
			||||||
 | 
					       TYPE_INT, /* lower_margin */
 | 
				
			||||||
 | 
					       TYPE_INT, /* hsync_len */
 | 
				
			||||||
 | 
					       TYPE_INT, /* vsync_len */
 | 
				
			||||||
 | 
					       TYPE_INT, /* sync */
 | 
				
			||||||
 | 
					       TYPE_INT, /* vmode */
 | 
				
			||||||
 | 
					       TYPE_INT, /* rotate */
 | 
				
			||||||
 | 
					       MK_ARRAY(TYPE_INT, 5)) /* reserved */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRUCT(vt_stat,
 | 
				
			||||||
 | 
					       TYPE_SHORT, /* v_active */
 | 
				
			||||||
 | 
					       TYPE_SHORT, /* v_signal */
 | 
				
			||||||
 | 
					       TYPE_SHORT) /* v_state */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue