| /* |
| * Copyright 2007 The Android Open Source Project |
| * |
| * Console tty device. |
| */ |
| #include "Common.h" |
| |
| #include <string.h> |
| |
| #include <sys/ioctl.h> |
| #include <linux/vt.h> |
| |
| |
| /* |
| * Handle the various console ioctls, most of which we can just ignore. |
| */ |
| static int ioctlConsoleTty(FakeDev* dev, int fd, int request, void* argp) |
| { |
| wsLog("%s: ioctl(0x%x, %p)\n", dev->debugName, request, argp); |
| switch (request) { |
| case VT_GETSTATE: // struct vt_stat* |
| /* |
| * Looks like they want vs.v_active. This just gets fed back into |
| * another console ioctl, so we don't really need to do anything. |
| * We zero out the struct so the data will at least appear to be |
| * initialized. |
| */ |
| memset(argp, 0, sizeof(struct vt_stat)); |
| break; |
| case VT_OPENQRY: // int* |
| /* they want the console number */ |
| *(int*)argp = 123; |
| break; |
| default: |
| /* ignore anything we don't understand */ |
| break; |
| } |
| |
| return 0; |
| } |
| |
| /* |
| * Open the console TTY device, which responds to a collection of ioctl()s. |
| */ |
| FakeDev* wsOpenDevConsoleTty(const char* pathName, int flags) |
| { |
| FakeDev* newDev = wsCreateFakeDev(pathName); |
| if (newDev != NULL) { |
| newDev->ioctl = ioctlConsoleTty; |
| } |
| return newDev; |
| } |
| |