1 /*
2 * Copyright 2007 The Android Open Source Project
3 *
4 * Console tty device.
5 */
6 #include "Common.h"
7
8 #include <string.h>
9
10 #include <sys/ioctl.h>
11 #include <linux/vt.h>
12
13
14 /*
15 * Handle the various console ioctls, most of which we can just ignore.
16 */
ioctlConsoleTty(FakeDev * dev,int fd,int request,void * argp)17 static int ioctlConsoleTty(FakeDev* dev, int fd, int request, void* argp)
18 {
19 wsLog("%s: ioctl(0x%x, %p)\n", dev->debugName, request, argp);
20 switch (request) {
21 case VT_GETSTATE: // struct vt_stat*
22 /*
23 * Looks like they want vs.v_active. This just gets fed back into
24 * another console ioctl, so we don't really need to do anything.
25 * We zero out the struct so the data will at least appear to be
26 * initialized.
27 */
28 memset(argp, 0, sizeof(struct vt_stat));
29 break;
30 case VT_OPENQRY: // int*
31 /* they want the console number */
32 *(int*)argp = 123;
33 break;
34 default:
35 /* ignore anything we don't understand */
36 break;
37 }
38
39 return 0;
40 }
41
42 /*
43 * Open the console TTY device, which responds to a collection of ioctl()s.
44 */
wsOpenDevConsoleTty(const char * pathName,int flags)45 FakeDev* wsOpenDevConsoleTty(const char* pathName, int flags)
46 {
47 FakeDev* newDev = wsCreateFakeDev(pathName);
48 if (newDev != NULL) {
49 newDev->ioctl = ioctlConsoleTty;
50 }
51 return newDev;
52 }
53
54