PRE_MEM_WRITE( "ioctl(PPGETTIME)", arg3, sizeof(struct vki_timeval) );
break;
+ case VKI_GIO_FONT:
+ PRE_MEM_WRITE( "ioctl(GIO_FONT)", arg3, 32 * 256 );
+ break;
+ case VKI_PIO_FONT:
+ PRE_MEM_READ( "ioctl(PIO_FONT)", arg3, 32 * 256 );
+ break;
+
+ case VKI_GIO_FONTX:
+ PRE_MEM_READ( "ioctl(GIO_FONTX)", arg3, sizeof(struct vki_consolefontdesc) );
+ if ( arg3 ) {
+ /* ToDo: don't do any of the following if the structure is invalid */
+ struct vki_consolefontdesc *cfd = (struct vki_consolefontdesc *)arg3;
+ PRE_MEM_WRITE( "ioctl(GIO_FONTX).chardata", (Addr)cfd->chardata,
+ 32 * cfd->charcount );
+ }
+ break;
+ case VKI_PIO_FONTX:
+ PRE_MEM_READ( "ioctl(PIO_FONTX)", arg3, sizeof(struct vki_consolefontdesc) );
+ if ( arg3 ) {
+ /* ToDo: don't do any of the following if the structure is invalid */
+ struct vki_consolefontdesc *cfd = (struct vki_consolefontdesc *)arg3;
+ PRE_MEM_READ( "ioctl(PIO_FONTX).chardata", (Addr)cfd->chardata,
+ 32 * cfd->charcount );
+ }
+ break;
+
+ case VKI_PIO_FONTRESET:
+ break;
+
+ case VKI_GIO_CMAP:
+ PRE_MEM_WRITE( "ioctl(GIO_CMAP)", arg3, 16 * 3 );
+ break;
+ case VKI_PIO_CMAP:
+ PRE_MEM_READ( "ioctl(PIO_CMAP)", arg3, 16 * 3 );
+ break;
+
+ case VKI_KIOCSOUND:
+ case VKI_KDMKTONE:
+ break;
+
+ case VKI_KDGETLED:
+ PRE_MEM_WRITE( "ioctl(KDGETLED)", arg3, sizeof(char) );
+ break;
+ case VKI_KDSETLED:
+ break;
+
+ case VKI_KDGKBTYPE:
+ PRE_MEM_WRITE( "ioctl(KDGKBTYPE)", arg3, sizeof(char) );
+ break;
+
+ case VKI_KDADDIO:
+ case VKI_KDDELIO:
+ case VKI_KDENABIO:
+ case VKI_KDDISABIO:
+ break;
+
+ case VKI_KDSETMODE:
+ break;
+ case VKI_KDGETMODE:
+ PRE_MEM_WRITE( "ioctl(KDGETMODE)", arg3, sizeof(int) );
+ break;
+
+ case VKI_KDMAPDISP:
+ case VKI_KDUNMAPDISP:
+ break;
+
+ case VKI_GIO_SCRNMAP:
+ PRE_MEM_WRITE( "ioctl(GIO_SCRNMAP)", arg3, VKI_E_TABSZ );
+ break;
+ case VKI_PIO_SCRNMAP:
+ PRE_MEM_READ( "ioctl(PIO_SCRNMAP)", arg3, VKI_E_TABSZ );
+ break;
+ case VKI_GIO_UNISCRNMAP:
+ PRE_MEM_WRITE( "ioctl(GIO_UNISCRNMAP)", arg3,
+ VKI_E_TABSZ * sizeof(unsigned short) );
+ break;
+ case VKI_PIO_UNISCRNMAP:
+ PRE_MEM_READ( "ioctl(PIO_UNISCRNMAP)", arg3,
+ VKI_E_TABSZ * sizeof(unsigned short) );
+ break;
+
+ case VKI_KDGKBMODE:
+ PRE_MEM_WRITE( "ioctl(KDGKBMODE)", arg3, sizeof(int) );
+ break;
+ case VKI_KDSKBMODE:
+ break;
+
+ case VKI_KDGKBMETA:
+ PRE_MEM_WRITE( "ioctl(KDGKBMETA)", arg3, sizeof(int) );
+ break;
+ case VKI_KDSKBMETA:
+ break;
+
+ case VKI_KDGKBLED:
+ PRE_MEM_WRITE( "ioctl(KDGKBLED)", arg3, sizeof(char) );
+ break;
+ case VKI_KDSKBLED:
+ break;
+
+ case VKI_KDGKBENT:
+ PRE_MEM_READ( "ioctl(KDGKBENT).kb_table",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_table,
+ sizeof(((struct vki_kbentry *)arg3)->kb_table) );
+ PRE_MEM_READ( "ioctl(KDGKBENT).kb_index",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_index,
+ sizeof(((struct vki_kbentry *)arg3)->kb_index) );
+ PRE_MEM_WRITE( "ioctl(KDGKBENT).kb_value",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_value,
+ sizeof(((struct vki_kbentry *)arg3)->kb_value) );
+ break;
+ case VKI_KDSKBENT:
+ PRE_MEM_READ( "ioctl(KDSKBENT).kb_table",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_table,
+ sizeof(((struct vki_kbentry *)arg3)->kb_table) );
+ PRE_MEM_READ( "ioctl(KDSKBENT).kb_index",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_index,
+ sizeof(((struct vki_kbentry *)arg3)->kb_index) );
+ PRE_MEM_READ( "ioctl(KDSKBENT).kb_value",
+ (Addr)&((struct vki_kbentry *)arg3)->kb_value,
+ sizeof(((struct vki_kbentry *)arg3)->kb_value) );
+ break;
+
+ case VKI_KDGKBSENT:
+ PRE_MEM_READ( "ioctl(KDGKBSENT).kb_func",
+ (Addr)&((struct vki_kbsentry *)arg3)->kb_func,
+ sizeof(((struct vki_kbsentry *)arg3)->kb_func) );
+ PRE_MEM_WRITE( "ioctl(KDGKSENT).kb_string",
+ (Addr)((struct vki_kbsentry *)arg3)->kb_string,
+ sizeof(((struct vki_kbsentry *)arg3)->kb_string) );
+ break;
+ case VKI_KDSKBSENT:
+ PRE_MEM_READ( "ioctl(KDSKBSENT).kb_func",
+ (Addr)&((struct vki_kbsentry *)arg3)->kb_func,
+ sizeof(((struct vki_kbsentry *)arg3)->kb_func) );
+ PRE_MEM_RASCIIZ( "ioctl(KDSKBSENT).kb_string",
+ (Addr)((struct vki_kbsentry *)arg3)->kb_string );
+ break;
+
+ case VKI_KDGKBDIACR:
+ PRE_MEM_WRITE( "ioctl(KDGKBDIACR)", arg3, sizeof(struct vki_kbdiacrs) );
+ break;
+ case VKI_KDSKBDIACR:
+ PRE_MEM_READ( "ioctl(KDSKBDIACR)", arg3, sizeof(struct vki_kbdiacrs) );
+ break;
+
+ case VKI_KDGETKEYCODE:
+ PRE_MEM_READ( "ioctl(KDGETKEYCODE).scancode",
+ (Addr)&((struct vki_kbkeycode *)arg3)->scancode,
+ sizeof(((struct vki_kbkeycode *)arg3)->scancode) );
+ PRE_MEM_WRITE( "ioctl(KDGETKEYCODE).keycode",
+ (Addr)((struct vki_kbkeycode *)arg3)->keycode,
+ sizeof(((struct vki_kbkeycode *)arg3)->keycode) );
+ break;
+ case VKI_KDSETKEYCODE:
+ PRE_MEM_READ( "ioctl(KDSETKEYCODE).scancode",
+ (Addr)&((struct vki_kbkeycode *)arg3)->scancode,
+ sizeof(((struct vki_kbkeycode *)arg3)->scancode) );
+ PRE_MEM_READ( "ioctl(KDSETKEYCODE).keycode",
+ (Addr)((struct vki_kbkeycode *)arg3)->keycode,
+ sizeof(((struct vki_kbkeycode *)arg3)->keycode) );
+ break;
+
+ case VKI_KDSIGACCEPT:
+ break;
+
+ case VKI_KDKBDREP:
+ PRE_MEM_READ( "ioctl(KBKBDREP)", arg3, sizeof(struct vki_kbd_repeat) );
+ break;
+
/* We don't have any specific information on it, so
try to do something reasonable based on direction and
size bits. The encoding scheme is described in
__vki_u32 reserved[5]; /* Reserved for future compatibility */
};
+//----------------------------------------------------------------------
+// From linux-2.6.9/include/linux/kb.h
+//----------------------------------------------------------------------
+
+#define VKI_GIO_FONT 0x4B60 /* gets font in expanded form */
+#define VKI_PIO_FONT 0x4B61 /* use font in expanded form */
+
+#define VKI_GIO_FONTX 0x4B6B /* get font using struct consolefontdesc */
+#define VKI_PIO_FONTX 0x4B6C /* set font using struct consolefontdesc */
+struct vki_consolefontdesc {
+ unsigned short charcount; /* characters in font (256 or 512) */
+ unsigned short charheight; /* scan lines per character (1-32) */
+ char __user *chardata; /* font data in expanded form */
+};
+
+#define VKI_PIO_FONTRESET 0x4B6D /* reset to default font */
+
+#define VKI_GIO_CMAP 0x4B70 /* gets colour palette on VGA+ */
+#define VKI_PIO_CMAP 0x4B71 /* sets colour palette on VGA+ */
+
+#define VKI_KIOCSOUND 0x4B2F /* start sound generation (0 for off) */
+#define VKI_KDMKTONE 0x4B30 /* generate tone */
+
+#define VKI_KDGETLED 0x4B31 /* return current led state */
+#define VKI_KDSETLED 0x4B32 /* set led state [lights, not flags] */
+
+#define VKI_KDGKBTYPE 0x4B33 /* get keyboard type */
+
+#define VKI_KDADDIO 0x4B34 /* add i/o port as valid */
+#define VKI_KDDELIO 0x4B35 /* del i/o port as valid */
+#define VKI_KDENABIO 0x4B36 /* enable i/o to video board */
+#define VKI_KDDISABIO 0x4B37 /* disable i/o to video board */
+
+#define VKI_KDSETMODE 0x4B3A /* set text/graphics mode */
+#define VKI_KDGETMODE 0x4B3B /* get current mode */
+
+#define VKI_KDMAPDISP 0x4B3C /* map display into address space */
+#define VKI_KDUNMAPDISP 0x4B3D /* unmap display from address space */
+
+#define VKI_E_TABSZ 256
+#define VKI_GIO_SCRNMAP 0x4B40 /* get screen mapping from kernel */
+#define VKI_PIO_SCRNMAP 0x4B41 /* put screen mapping table in kernel */
+#define VKI_GIO_UNISCRNMAP 0x4B69 /* get full Unicode screen mapping */
+#define VKI_PIO_UNISCRNMAP 0x4B6A /* set full Unicode screen mapping */
+
+#define VKI_GIO_UNIMAP 0x4B66 /* get unicode-to-font mapping from kernel */
+#define VKI_PIO_UNIMAP 0x4B67 /* put unicode-to-font mapping in kernel */
+#define VKI_PIO_UNIMAPCLR 0x4B68 /* clear table, possibly advise hash algorithm */
+
+#define VKI_KDGKBMODE 0x4B44 /* gets current keyboard mode */
+#define VKI_KDSKBMODE 0x4B45 /* sets current keyboard mode */
+
+#define VKI_KDGKBMETA 0x4B62 /* gets meta key handling mode */
+#define VKI_KDSKBMETA 0x4B63 /* sets meta key handling mode */
+
+#define VKI_KDGKBLED 0x4B64 /* get led flags (not lights) */
+#define VKI_KDSKBLED 0x4B65 /* set led flags (not lights) */
+
+struct vki_kbentry {
+ unsigned char kb_table;
+ unsigned char kb_index;
+ unsigned short kb_value;
+};
+#define VKI_KDGKBENT 0x4B46 /* gets one entry in translation table */
+#define VKI_KDSKBENT 0x4B47 /* sets one entry in translation table */
+
+struct vki_kbsentry {
+ unsigned char kb_func;
+ unsigned char kb_string[512];
+};
+#define VKI_KDGKBSENT 0x4B48 /* gets one function key string entry */
+#define VKI_KDSKBSENT 0x4B49 /* sets one function key string entry */
+
+struct vki_kbdiacr {
+ unsigned char diacr, base, result;
+};
+struct vki_kbdiacrs {
+ unsigned int kb_cnt; /* number of entries in following array */
+ struct vki_kbdiacr kbdiacr[256]; /* MAX_DIACR from keyboard.h */
+};
+#define VKI_KDGKBDIACR 0x4B4A /* read kernel accent table */
+#define VKI_KDSKBDIACR 0x4B4B /* write kernel accent table */
+
+struct vki_kbkeycode {
+ unsigned int scancode, keycode;
+};
+#define VKI_KDGETKEYCODE 0x4B4C /* read kernel keycode table entry */
+#define VKI_KDSETKEYCODE 0x4B4D /* write kernel keycode table entry */
+
+#define VKI_KDSIGACCEPT 0x4B4E /* accept kbd generated signals */
+
+struct vki_kbd_repeat {
+ int delay; /* in msec; <= 0: don't change */
+ int period; /* in msec; <= 0: don't change */
+ /* earlier this field was misnamed "rate" */
+};
+#define VKI_KDKBDREP 0x4B52 /* set keyboard delay/repeat rate;
+ * actually used values are returned */
+
+#define VKI_KDFONTOP 0x4B72 /* font operations */
+
#endif // __LINUX_VKI_H
/*--------------------------------------------------------------------*/