bitkeeper revision 1.202 (3eb16700-gEpXFlt08DC4GuoWltR6Q)

jws merge
This commit is contained in:
jws@cairnwell.research committed 2003-05-01 18:27:12 +00:00
commit 78cbdf5809
13 files changed
+237 -475

No files matched your search

+1 -1
View File
@@ -298,6 +298,7 @@
3ddb79c0c0cX_DZE209-Bb-Rx1v-Aw xen/include/xeno/cache.h
3e9c248aEG_nCngztiFmv5CfayNkcA xen/include/xeno/cdrom.h
3ddb79c259jh8hE7vre_8NuE7nwNSA xen/include/xeno/config.h
3eb165e0eawr3R-p2ZQtSdLWtLRN_A xen/include/xeno/console.h
3ddb79c1V44RD26YqCUm-kqIupM37A xen/include/xeno/ctype.h
3ddb79c05DdHQ0UxX_jKsXdR4QlMCA xen/include/xeno/delay.h
3ddb79c2PMeWTK86y4C3F4MzHw4A1g xen/include/xeno/dom0_ops.h
@@ -416,7 +417,6 @@
3ea53c6em6uzVHSiGqrbbAVofyRY_g xenolinux-2.4.21-pre4-sparse/drivers/block/genhd.c
3e5a4e66mrtlmV75L1tjKDg8RaM5gA xenolinux-2.4.21-pre4-sparse/drivers/block/ll_rw_blk.c
3ead095dEkj9JJWYYBnbvW3OYbKFxg xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
3ead095d00j61GCBaYdu_SwmY-vdSQ xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
3ead095dPseRoFELVf_xcnVXjq02hw xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
3e5a4e66rw65CxyolW9PKz4GG42RcA xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
3e5a4e669uzIE54VwucPYtGwXLAbzA xenolinux-2.4.21-pre4-sparse/fs/exec.c
+6
View File
@@ -15,6 +15,7 @@
#include <asm/flushtlb.h>
#include <asm/msr.h>
#include <xeno/blkdev.h>
#include <xeno/console.h>
/*
* NB. No ring-3 access in initial guestOS pagetables. Note that we allow
@@ -625,6 +626,11 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params,
virt_startinfo_address->dom_id = p->domain;
virt_startinfo_address->flags = IS_PRIV(p) ? SIF_PRIVILEGED : 0;
// guest os can have console if:
// 1) its privileged (need iopl right now)
// 2) its the owner of the console (and therefore will get kbd/mouse events)
// 3) xen hasnt tried to touch the console (see console.h)
virt_startinfo_address->flags |= (IS_PRIV(p) && CONSOLE_ISOWNER(p) && opt_console == 0) ? SIF_CONSOLE : 0;
if ( initrd_len )
{
+70 -50
View File
@@ -15,6 +15,7 @@
#include <asm/byteorder.h>
#include <linux/if_ether.h>
#include <asm/domain_page.h>
#include <xeno/console.h>
static int xpos, ypos;
static volatile unsigned char *video;
@@ -32,6 +33,7 @@ void init_serial(void);
void start_of_day(void);
/* Command line options and variables. */
int opt_console = 1;
unsigned int opt_ser_baud = 9600; /* default baud for COM1 */
unsigned int opt_dom0_mem = 16000; /* default kbytes for DOM0 */
unsigned int opt_ne_base = 0; /* NE2k NICs cannot be probed */
@@ -43,6 +45,7 @@ static struct {
int type;
void *var;
} opts[] = {
{ "console", OPT_BOOL, &opt_console },
{ "ser_baud", OPT_UINT, &opt_ser_baud },
{ "dom0_mem", OPT_UINT, &opt_dom0_mem },
{ "ne_base", OPT_UINT, &opt_ne_base },
@@ -219,6 +222,7 @@ void cmain (unsigned long magic, multiboot_info_t *mbi)
void init_serial(void)
{
#ifdef CONFIG_OUTPUT_SERIAL
/* 'opt_ser_baud' baud, no parity, 1 stop bit, 8 data bits. */
outb(0x83, SERIAL_BASE+DATA_FORMAT);
outb(115200/opt_ser_baud, SERIAL_BASE+DIVISOR_LO);
@@ -227,14 +231,17 @@ void init_serial(void)
/* No interrupts. */
outb(0x00, SERIAL_BASE+INT_ENABLE);
#endif
}
void putchar_serial(unsigned char c)
{
#ifdef CONFIG_OUTPUT_SERIAL
if ( c == '\n' ) putchar_serial('\r');
while ( !(inb(SERIAL_BASE+LINE_STATUS)&(1<<5)) ) barrier();
outb(c, SERIAL_BASE+TX_HOLD);
#endif
}
@@ -247,6 +254,7 @@ void putchar_serial(unsigned char c)
/* This is actually code from vgaHWRestore in an old version of XFree86 :-) */
void init_vga(void)
{
#ifdef CONFIG_OUTPUT_CONSOLE
/* The following VGA state was saved from a chip in text mode 3. */
static unsigned char regs[] = {
/* Sequencer registers */
@@ -265,81 +273,93 @@ void init_vga(void)
int i, j = 0;
volatile unsigned char tmp;
tmp = inb(0x3da);
outb(0x00, 0x3c0);
for ( i = 0; i < 5; i++ )
if(opt_console) {
tmp = inb(0x3da);
outb(0x00, 0x3c0);
for ( i = 0; i < 5; i++ )
outw((regs[j++] << 8) | i, 0x3c4);
/* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 of CRTC[17]. */
outw(((regs[5+17] & 0x7F) << 8) | 17, 0x3d4);
for ( i = 0; i < 25; i++ )
/* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 of CRTC[17]. */
outw(((regs[5+17] & 0x7F) << 8) | 17, 0x3d4);
for ( i = 0; i < 25; i++ )
outw((regs[j++] << 8) | i, 0x3d4);
for ( i = 0; i < 9; i++ )
for ( i = 0; i < 9; i++ )
outw((regs[j++] << 8) | i, 0x3ce);
for ( i = 0; i < 21; i++ )
{
tmp = inb(0x3da);
outb(i, 0x3c0);
outb(regs[j++], 0x3c0);
for ( i = 0; i < 21; i++ )
{
tmp = inb(0x3da);
outb(i, 0x3c0);
outb(regs[j++], 0x3c0);
}
tmp = inb(0x3da);
outb(0x20, 0x3c0);
}
tmp = inb(0x3da);
outb(0x20, 0x3c0);
#endif
}
/* Clear the screen and initialize VIDEO, XPOS and YPOS. */
void cls(void)
{
#ifdef CONFIG_OUTPUT_CONSOLE
int i;
video = (unsigned char *) VIDEO;
for (i = 0; i < COLUMNS * LINES * 2; i++)
if(opt_console) {
video = (unsigned char *) VIDEO;
for (i = 0; i < COLUMNS * LINES * 2; i++)
*(video + i) = 0;
xpos = 0;
ypos = 0;
outw(10+(1<<(5+8)), 0x3d4); /* cursor off */
xpos = 0;
ypos = 0;
outw(10+(1<<(5+8)), 0x3d4); /* cursor off */
}
#endif
}
/* Put the character C on the screen. */
static void putchar (int c)
{
#ifdef CONFIG_OUTPUT_CONSOLE
static char zeroarr[2*COLUMNS] = { 0 };
if ( (c != '\n') && ((c < 32) || (c > 126)) ) return;
#endif
putchar_serial(c);
if ( c == '\n' )
{
newline:
xpos = 0;
ypos++;
if (ypos >= LINES)
{
ypos = LINES-1;
memcpy((char*)video,
(char*)video + 2*COLUMNS, (LINES-1)*2*COLUMNS);
memcpy((char*)video + (LINES-1)*2*COLUMNS,
zeroarr, 2*COLUMNS);
}
return;
}
*(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
*(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
xpos++;
if (xpos >= COLUMNS)
#ifdef CONFIG_OUTPUT_CONSOLE
if(opt_console) {
if (c == '\n')
{
newline:
xpos = 0;
ypos++;
if (ypos >= LINES)
{
ypos = LINES-1;
memcpy((char*)video,
(char*)video + 2*COLUMNS, (LINES-1)*2*COLUMNS);
memcpy((char*)video + (LINES-1)*2*COLUMNS,
zeroarr, 2*COLUMNS);
}
return;
}
*(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
*(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
xpos++;
if (xpos >= COLUMNS)
goto newline;
}
#endif
}
static inline void __putstr(const char *str)
+14 -11
View File
@@ -31,10 +31,12 @@
#define AUX_IRQ 12
#undef KBD_DEBUG
/* THIS SECTION DEALS WITH CONFIG_XEN_ATTENTION_KEY */
// always set for now. potentially moved to config.in later.
// always set for now. potentially moved to a central config later.
// this should really affect common/keyhandler.c too
#define CONFIG_XEN_ATTENTION_KEY
#ifdef CONFIG_XEN_ATTENTION_KEY
@@ -43,8 +45,6 @@ static int xen_attention_key_down = 0;
#define XEN_ATTENTION_KEY 0x46 // scroll lock
#define KBD_SCANCODE_KEYUP_MASK 0x80
#undef KBD_DEBUG
/* naive scancode -> key mappings for internal xen use */
static unsigned char keymap_normal[] =
@@ -144,7 +144,7 @@ static unsigned char convert_scancode (unsigned char scancode)
#endif /* CONFIG_XEN_ATTENTION_KEY */
/* THIS SECTION DEALS WITH STORING A RING OF PENDING EVENTS */
/* THIS SECTION DEALS WITH STORING A RING OF PENDING KBD EVENTS */
// store kbd events waiting to be processed by guest os
#define KBD_RING_SIZE 64
@@ -179,9 +179,7 @@ static int kbd_ring_pop() {
/* THIS SECTION DEALS WITH COMMUNICATING PS2 EVENTS/CMDS WITH GUEST OS */
// ownership of keyboard - current defaulting to dom0
#define KBD_ISOWNER(p) (p->domain == 0)
#define KBD_OWNER find_domain_by_id(0)
#include <xeno/console.h>
// need lock as there may be _two_ interrupts at play, keyboard and mouse, as well as guest os actions
static spinlock_t kbd_lock;
@@ -194,7 +192,7 @@ long do_kbd_op(unsigned char op, unsigned char val)
printk("do_kbd_op: op %2x, val %2x, prod %d, cons %d\n", op, val, kbd_ring_prod, kbd_ring_cons);
#endif
if ( !KBD_ISOWNER(current) ) return -EPERM;
if ( !CONSOLE_ISOWNER(current) ) return -EPERM;
switch(op) {
case KBD_OP_WRITEOUTPUT:
@@ -225,6 +223,7 @@ static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
unsigned long flags;
spin_lock_irqsave(&kbd_lock, flags);
status = kbd_read_status();
#ifdef KBD_DEBUG
printk("keyboard_interrupt irq %d, status 0x%2x\n", irq, status);
#endif
@@ -241,10 +240,14 @@ static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
//printk("xen_attention_key_down %d\n", xen_attention_key_down);
} else if (xen_attention_key_down) {
key_handler *handler;
unsigned char key = convert_scancode(scancode);
unsigned char key;
spin_unlock_irqrestore(&kbd_lock, flags);
key = convert_scancode(scancode);
if(key && (handler = get_key_handler(key)))
(*handler)(key, dev_id, regs);
spin_lock_irqsave(&kbd_lock, flags);
status = kbd_read_status();
continue; // do not send key to guest os
}
@@ -254,11 +257,11 @@ static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR))) {
kbd_ring_push(status, scancode);
cpu_mask = mark_guest_event(KBD_OWNER, _EVENT_KBD);
cpu_mask = mark_guest_event(CONSOLE_OWNER, _EVENT_KBD);
guest_event_notify(cpu_mask);
status = kbd_read_status();
scancode = kbd_read_input();
//scancode = kbd_read_input();
}
}
+2 -1
View File
@@ -250,7 +250,8 @@ typedef struct start_info_st {
} start_info_t;
/* These flags are passed in the 'flags' field of start_info_t. */
#define SIF_PRIVILEGED 1 /* Is thie domain privileged? */
#define SIF_PRIVILEGED 1 /* Is the domain privileged? */
#define SIF_CONSOLE 2 /* Does the domain own the physical console? */
/* For use in guest OSes. */
extern shared_info_t *HYPERVISOR_shared_info;
+32
View File
@@ -0,0 +1,32 @@
// <xeno/console.h> - Xen header file concerning console access
// Copyright (c) 2003 James Scott, Intel Research Cambridge
// ownership of console - current defaulting to dom0
// this is currently used to see who gets the PS/2 keyboard/mouse events
#define CONSOLE_ISOWNER(p) (p->domain == 0)
#define CONSOLE_OWNER find_domain_by_id(0)
// Xen output redirection (in common/kernel.c!)
//
// This is coarsely done right now -
// a boot-time option for console output
// a compile-time option for serial output
//
// Really, when starting up a guest os with console privilege, we should:
// - reset the video to a known state
// - stop sending characters (use global var opt_console)
// - allow the guest os access to the video RAM area (instead of the coarse IOPL hack nowadays) and keyboard (see above)
// Similarly, when stopping that guest os, we should:
// - stop allowing the guest os access to video RAM
// - reset the video to a known state
// - start sending it console output again (if we so desire)
//
// resetting the video to a known state has not been explored yet
// the notion of privileges for guest os's (e.g. console privilege) has not been explored yet
// so this will do for now
#define CONFIG_OUTPUT_CONSOLE 1 // but see also opt_console
#define CONFIG_OUTPUT_SERIAL 1
extern int opt_console;
@@ -125,9 +125,11 @@ CONFIG_XENOLINUX_BLOCK=y
#
# Character devices
#
CONFIG_XEN_CONSOLE=y
# CONFIG_VT is not set
# CONFIG_VGA_CONSOLE is not set
# CONFIG_DUMMY_CONSOLE is not set
CONFIG_PSMOUSE=y
# CONFIG_PSMOUSE is not set
# CONFIG_UNIX98_PTYS is not set
#
@@ -1,3 +1,3 @@
O_TARGET := con.o
obj-y := console.o
obj-$(CONFIG_XEN_CONSOLE) := console.o
include $(TOPDIR)/Rules.make
@@ -24,9 +24,11 @@
#include <asm/uaccess.h>
#include <asm/hypervisor.h>
#define XENO_TTY_MINOR 123
/******************** Kernel console driver ********************************/
static void kconsole_write(struct console *co, const char *s, unsigned count)
static void xen_console_write(struct console *co, const char *s, unsigned count)
{
#define STRLEN 256
static char str[STRLEN];
@@ -49,56 +51,57 @@ static void kconsole_write(struct console *co, const char *s, unsigned count)
}
}
static kdev_t kconsole_device(struct console *c)
static kdev_t xen_console_device(struct console *c)
{
/*
* This is the magic that binds our "struct console" to our
* "tty_struct", defined below.
*/
return MKDEV(TTY_MAJOR, 0);
return MKDEV(TTY_MAJOR, XENO_TTY_MINOR);
}
static struct console kconsole_info = {
name: "xenocon",
write: kconsole_write,
device: kconsole_device,
static struct console xen_console_info = {
name: "xen_console",
write: xen_console_write,
device: xen_console_device,
flags: CON_PRINTBUFFER,
index: -1,
};
void xeno_console_init(void)
void xen_console_init(void)
{
register_console(&kconsole_info);
printk("xeno_console_init\n");
register_console(&xen_console_info);
}
/******************** Initial /dev/console *********************************/
static struct tty_driver console_driver;
static int console_refcount;
static struct tty_struct *console_table[1];
static struct termios *console_termios[1];
static struct termios *console_termios_locked[1];
static struct tty_driver xeno_console_driver;
static int xeno_console_refcount;
static struct tty_struct *xeno_console_table[1];
static struct termios *xeno_console_termios[1];
static struct termios *xeno_console_termios_locked[1];
static int console_write_room(struct tty_struct *tty)
static int xeno_console_write_room(struct tty_struct *tty)
{
return INT_MAX;
}
static int console_chars_in_buffer(struct tty_struct *tty)
static int xeno_console_chars_in_buffer(struct tty_struct *tty)
{
return 0;
}
static inline int console_xmit(int ch)
static inline int xeno_console_xmit(int ch)
{
char _ch = ch;
kconsole_write(NULL, &_ch, 1);
xen_console_write(NULL, &_ch, 1);
return 1;
}
static int console_write(struct tty_struct *tty, int from_user,
static int xeno_console_write(struct tty_struct *tty, int from_user,
const u_char * buf, int count)
{
int i;
@@ -119,17 +122,17 @@ static int console_write(struct tty_struct *tty, int from_user,
{
ch = buf[i];
}
console_xmit(ch);
xeno_console_xmit(ch);
}
return i;
}
static void console_put_char(struct tty_struct *tty, u_char ch)
static void xeno_console_put_char(struct tty_struct *tty, u_char ch)
{
console_xmit(ch);
xeno_console_xmit(ch);
}
static int console_open(struct tty_struct *tty, struct file *filp)
static int xeno_console_open(struct tty_struct *tty, struct file *filp)
{
int line;
@@ -146,37 +149,40 @@ static int console_open(struct tty_struct *tty, struct file *filp)
return 0;
}
static void console_close(struct tty_struct *tty, struct file *filp)
static void xeno_console_close(struct tty_struct *tty, struct file *filp)
{
MOD_DEC_USE_COUNT;
}
static int __init console_ini(void)
int __init xeno_con_init(void)
{
memset(&console_driver, 0, sizeof(struct tty_driver));
console_driver.magic = TTY_DRIVER_MAGIC;
console_driver.driver_name = "xeno_console";
console_driver.name = "console";
console_driver.major = TTY_MAJOR;
console_driver.minor_start = 0;
console_driver.num = 1;
console_driver.type = TTY_DRIVER_TYPE_SERIAL;
console_driver.subtype = SERIAL_TYPE_NORMAL;
console_driver.init_termios = tty_std_termios;
console_driver.flags = TTY_DRIVER_REAL_RAW;
console_driver.refcount = &console_refcount;
console_driver.table = console_table;
console_driver.termios = console_termios;
console_driver.termios_locked = console_termios_locked;
/* Functions */
console_driver.open = console_open;
console_driver.close = console_close;
console_driver.write = console_write;
console_driver.write_room = console_write_room;
console_driver.put_char = console_put_char;
console_driver.chars_in_buffer = console_chars_in_buffer;
if ( tty_register_driver(&console_driver) )
printk("xeno_con_init\n");
memset(&xeno_console_driver, 0, sizeof(struct tty_driver));
xeno_console_driver.magic = TTY_DRIVER_MAGIC;
xeno_console_driver.driver_name = "xeno_console";
xeno_console_driver.name = "xencon";
xeno_console_driver.major = TTY_MAJOR;
xeno_console_driver.minor_start = XENO_TTY_MINOR;
xeno_console_driver.num = 1;
xeno_console_driver.type = TTY_DRIVER_TYPE_SERIAL;
xeno_console_driver.subtype = SERIAL_TYPE_NORMAL;
xeno_console_driver.init_termios = tty_std_termios;
xeno_console_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS;
xeno_console_driver.refcount = &xeno_console_refcount;
xeno_console_driver.table = xeno_console_table;
xeno_console_driver.termios = xeno_console_termios;
xeno_console_driver.termios_locked = xeno_console_termios_locked;
/* Functions */
xeno_console_driver.open = xeno_console_open;
xeno_console_driver.close = xeno_console_close;
xeno_console_driver.write = xeno_console_write;
xeno_console_driver.write_room = xeno_console_write_room;
xeno_console_driver.put_char = xeno_console_put_char;
xeno_console_driver.chars_in_buffer = xeno_console_chars_in_buffer;
if ( tty_register_driver(&xeno_console_driver) )
{
printk(KERN_ERR "Couldn't register Xeno console driver\n");
}
@@ -188,17 +194,17 @@ static int __init console_ini(void)
return 0;
}
static void __exit console_fin(void)
void __exit xeno_con_fini(void)
{
int ret;
ret = tty_unregister_driver(&console_driver);
ret = tty_unregister_driver(&xeno_console_driver);
if ( ret != 0 )
{
printk(KERN_ERR "Unable to unregister Xeno console driver: %d\n", ret);
}
}
module_init(console_ini);
module_exit(console_fin);
module_init(xeno_con_init);
module_exit(xeno_con_fini);
@@ -163,8 +163,16 @@ void __init setup_arch(char **cmdline_p)
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
memset(&drive_info, 0, sizeof(drive_info));
memset(&screen_info, 0, sizeof(screen_info));
// this is drawn from a dump from vgacon:startup in standard linux
screen_info.orig_video_mode = 3;
screen_info.orig_video_isVGA = 1;
screen_info.orig_video_lines = 25;
screen_info.orig_video_cols = 80;
screen_info.orig_video_ega_bx = 3;
screen_info.orig_video_points = 16;
memset(&apm_info.bios, 0, sizeof(apm_info.bios));
aux_device_present = 0;
aux_device_present = 0;
#ifdef CONFIG_BLK_DEV_RAM
rd_image_start = 0;
rd_prompt = 0;
@@ -292,6 +300,27 @@ void __init setup_arch(char **cmdline_p)
#endif
paging_init();
if(start_info.flags & SIF_PRIVILEGED) {
// we are privileged guest os - should be able to set IOPL
if(HYPERVISOR_iopl(1)) {
panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
}
}
if(start_info.flags & SIF_CONSOLE) {
if(!(start_info.flags & SIF_PRIVILEGED)) {
panic("Xen granted us console access but not privileged status");
}
#ifdef CONFIG_VT
#if defined(CONFIG_VGA_CONSOLE)
conswitchp = &vga_con;
#elif defined(CONFIG_DUMMY_CONSOLE)
conswitchp = &dummy_con;
#endif
#endif
}
}
static int cachesize_override __initdata = -1;
@@ -4,18 +4,22 @@
mainmenu_option next_comment
comment 'Character devices'
bool 'Xen console support' CONFIG_XEN_CONSOLE
comment 'The options below are alpha-stage and will probably not work'
bool 'Virtual terminal' CONFIG_VT
if [ "$CONFIG_VT" = "n" ]; then
bool 'Dummy Console (to allow kbd/mouse testing without VTs)' CONFIG_DUMMY_CONSOLE
fi
bool 'PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
if [ "$CONFIG_VT" = "y" ]; then
bool ' Support for console on virtual terminal' CONFIG_VT_CONSOLE
bool ' Support for VGA Video' CONFIG_VGA_CONSOLE
bool ' Support for Dummy Video (for testing)' CONFIG_DUMMY_CONSOLE
bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
fi
bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
fi
endmenu
# KEPT IN CASE WE WANT TO BRING SOME BACK...
@@ -1,339 +0,0 @@
#
# Makefile for the kernel character device drivers.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# XENO INFO - this is just copied from the linux one
# and most is irrelevant for xenolinux and can go.
# (see Config.in for the relevant bits)
# JWS - added dummy_console to test ps2 functionality
#
# This file contains the font map for the default (hardware) font
#
FONTMAPFILE = cp437.uni
O_TARGET := char.o
obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
# All of the (potential) objects that export symbols.
# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
export-objs := busmouse.o console.o keyboard.o sysrq.o \
misc.o pty.o random.o selection.o serial.o \
sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
au1000_gpio.o hp_psaux.o nvram.o dummy_console.o
mod-subdirs := joystick ftape drm drm-4.0 pcmcia
list-multi :=
KEYMAP =defkeymap.o
KEYBD =pc_keyb.o
CONSOLE =console.o
SERIAL =serial.o
ifeq ($(ARCH),s390)
KEYMAP =
KEYBD =
CONSOLE =
SERIAL =
endif
ifeq ($(ARCH),mips)
ifneq ($(CONFIG_PC_KEYB),y)
KEYBD =
endif
endif
ifeq ($(ARCH),s390x)
KEYMAP =
KEYBD =
CONSOLE =
SERIAL =
endif
ifeq ($(ARCH),m68k)
ifdef CONFIG_AMIGA
KEYBD = amikeyb.o
else
ifndef CONFIG_MAC
KEYBD =
endif
endif
SERIAL =
endif
ifeq ($(ARCH),parisc)
ifdef CONFIG_GSC_PS2
KEYBD = hp_psaux.o hp_keyb.o
else
KEYBD =
endif
ifdef CONFIG_SERIAL_MUX
CONSOLE += mux.o
endif
ifdef CONFIG_PDC_CONSOLE
CONSOLE += pdc_console.o
endif
endif
ifdef CONFIG_Q40
KEYBD += q40_keyb.o
SERIAL = serial.o
endif
ifdef CONFIG_APOLLO
KEYBD += dn_keyb.o
endif
ifeq ($(ARCH),parisc)
ifdef CONFIG_GSC_PS2
KEYBD = hp_psaux.o hp_keyb.o
else
KEYBD =
endif
ifdef CONFIG_PDC_CONSOLE
CONSOLE += pdc_console.o
endif
endif
ifeq ($(ARCH),arm)
ifneq ($(CONFIG_PC_KEYMAP),y)
KEYMAP =
endif
ifneq ($(CONFIG_PC_KEYB),y)
KEYBD =
endif
endif
ifeq ($(ARCH),sh)
KEYMAP =
KEYBD =
CONSOLE =
ifeq ($(CONFIG_SH_HP600),y)
KEYMAP = defkeymap.o
KEYBD = scan_keyb.o hp600_keyb.o
CONSOLE = console.o
endif
ifeq ($(CONFIG_SH_DMIDA),y)
# DMIDA does not connect the HD64465 PS/2 keyboard port
# but we allow for USB keyboards to be plugged in.
KEYMAP = defkeymap.o
KEYBD = # hd64465_keyb.o pc_keyb.o
CONSOLE = console.o
endif
ifeq ($(CONFIG_SH_EC3104),y)
KEYMAP = defkeymap.o
KEYBD = ec3104_keyb.o
CONSOLE = console.o
endif
ifeq ($(CONFIG_SH_DREAMCAST),y)
KEYMAP = defkeymap.o
KEYBD =
CONSOLE = console.o
endif
endif
ifeq ($(CONFIG_DECSTATION),y)
KEYMAP =
KEYBD =
SERIAL = decserial.o
endif
ifeq ($(CONFIG_BAGET_MIPS),y)
KEYBD =
SERIAL =
endif
ifeq ($(CONFIG_NINO),y)
SERIAL =
endif
ifneq ($(CONFIG_SUN_SERIAL),)
SERIAL =
endif
ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
KEYBD = qtronix.o
KEYMAP = qtronixmap.o
endif
ifeq ($(CONFIG_DUMMY_KEYB),y)
KEYBD = dummy_keyb.o
endif
obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
ifeq ($(CONFIG_VT),)
obj-$(CONFIG_DUMMY_CONSOLE) += $(KEYBD) dummy_console.o
endif
obj-$(CONFIG_SERIAL) += $(SERIAL)
obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
obj-$(CONFIG_SERIAL_21285) += serial_21285.o
obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o
ifndef CONFIG_SUN_KEYBOARD
obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
else
obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
endif
obj-$(CONFIG_HIL) += hp_keyb.o
obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
obj-$(CONFIG_ROCKETPORT) += rocket.o
obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
obj-$(CONFIG_DIGI) += pcxx.o
obj-$(CONFIG_DIGIEPCA) += epca.o
obj-$(CONFIG_CYCLADES) += cyclades.o
obj-$(CONFIG_STALLION) += stallion.o
obj-$(CONFIG_ISTALLION) += istallion.o
obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
obj-$(CONFIG_RISCOM8) += riscom8.o
obj-$(CONFIG_ISI) += isicom.o
obj-$(CONFIG_ESPSERIAL) += esp.o
obj-$(CONFIG_SYNCLINK) += synclink.o
obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
obj-$(CONFIG_N_HDLC) += n_hdlc.o
obj-$(CONFIG_SPECIALIX) += specialix.o
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
obj-$(CONFIG_SX) += sx.o generic_serial.o
obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
obj-$(CONFIG_SERIAL167) += serial167.o
obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
subdir-$(CONFIG_RIO) += rio
subdir-$(CONFIG_INPUT) += joystick
obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
obj-$(CONFIG_PRINTER) += lp.o
obj-$(CONFIG_TIPAR) += tipar.o
ifeq ($(CONFIG_INPUT),y)
obj-y += joystick/js.o
endif
obj-$(CONFIG_BUSMOUSE) += busmouse.o
obj-$(CONFIG_DTLK) += dtlk.o
obj-$(CONFIG_R3964) += n_r3964.o
obj-$(CONFIG_APPLICOM) += applicom.o
obj-$(CONFIG_SONYPI) += sonypi.o
obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
obj-$(CONFIG_ADBMOUSE) += adbmouse.o
obj-$(CONFIG_PC110_PAD) += pc110pad.o
obj-$(CONFIG_MK712_MOUSE) += mk712.o
obj-$(CONFIG_RTC) += rtc.o
obj-$(CONFIG_EFI_RTC) += efirtc.o
ifeq ($(CONFIG_PPC),)
obj-$(CONFIG_NVRAM) += nvram.o
endif
obj-$(CONFIG_TOSHIBA) += toshiba.o
obj-$(CONFIG_I8K) += i8k.o
obj-$(CONFIG_DS1620) += ds1620.o
obj-$(CONFIG_INTEL_RNG) += i810_rng.o
obj-$(CONFIG_AMD_RNG) += amd768_rng.o
obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
obj-$(CONFIG_COBALT_LCD) += lcd.o
obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
subdir-$(CONFIG_FTAPE) += ftape
subdir-$(CONFIG_DRM_OLD) += drm-4.0
subdir-$(CONFIG_DRM_NEW) += drm
subdir-$(CONFIG_PCMCIA) += pcmcia
subdir-$(CONFIG_AGP) += agp
ifeq ($(CONFIG_FTAPE),y)
obj-y += ftape/ftape.o
endif
obj-$(CONFIG_H8) += h8.o
obj-$(CONFIG_PPDEV) += ppdev.o
obj-$(CONFIG_DZ) += dz.o
obj-$(CONFIG_NWBUTTON) += nwbutton.o
obj-$(CONFIG_NWFLASH) += nwflash.o
obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
# Only one watchdog can succeed. We probe the hardware watchdog
# drivers first, then the softdog driver. This means if your hardware
# watchdog dies or is 'borrowed' for some reason the software watchdog
# still gives you some cover.
obj-$(CONFIG_PCWATCHDOG) += pcwd.o
obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
obj-$(CONFIG_IB700_WDT) += ib700wdt.o
obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
obj-$(CONFIG_WDT) += wdt.o
obj-$(CONFIG_WDTPCI) += wdt_pci.o
obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
obj-$(CONFIG_977_WATCHDOG) += wdt977.o
obj-$(CONFIG_I810_TCO) += i810-tco.o
obj-$(CONFIG_MACHZ_WDT) += machzwd.o
obj-$(CONFIG_SH_WDT) += shwdt.o
obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
#obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
obj-$(CONFIG_INDYDOG) += indydog.o
obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
subdir-$(CONFIG_MWAVE) += mwave
ifeq ($(CONFIG_MWAVE),y)
obj-y += mwave/mwave.o
endif
subdir-$(CONFIG_IPMI_HANDLER) += ipmi
ifeq ($(CONFIG_IPMI_HANDLER),y)
obj-y += ipmi/ipmi.o
endif
include $(TOPDIR)/Rules.make
fastdep:
conmakehash: conmakehash.c
$(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
.DELETE_ON_ERROR:
defkeymap.c: defkeymap.map
set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
qtronixmap.c: qtronixmap.map
set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
@@ -102,8 +102,8 @@
#include <linux/kmod.h>
#ifdef CONFIG_XENO
extern void xeno_console_init(void);
#ifdef CONFIG_XEN_CONSOLE
extern void xen_console_init(void);
#endif
#ifdef CONFIG_VT
@@ -817,8 +817,9 @@ static int init_dev(kdev_t device, struct tty_struct **ret_tty)
int idx;
driver = get_tty_driver(device);
if (!driver)
return -ENODEV;
if (!driver) {
return -ENODEV;
}
idx = MINOR(device) - driver->minor_start;
@@ -2186,7 +2187,7 @@ int tty_unregister_driver(struct tty_driver *driver)
*/
void __init console_init(void)
{
/* Setup the default TTY line discipline. */
/* Setup the default TTY line discipline. */
memset(ldiscs, 0, sizeof(ldiscs));
(void) tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY);
@@ -2209,9 +2210,14 @@ void __init console_init(void)
#ifdef CONFIG_EARLY_PRINTK
disable_early_printk();
#endif
#ifdef CONFIG_VT
con_init();
#endif
#ifdef CONFIG_XEN_CONSOLE
xen_console_init();
#endif
#ifdef CONFIG_AU1000_SERIAL_CONSOLE
au1000_serial_console_init();
#endif
@@ -2326,9 +2332,6 @@ void __init tty_init(void)
/* console calls tty_register_driver() before kmalloc() works.
* Thus, we can't devfs_register() then. Do so now, instead.
*/
#ifdef CONFIG_XENO
xeno_console_init();
#endif
#ifdef CONFIG_VT
con_init_devfs();
#endif
@@ -2358,11 +2361,6 @@ void __init tty_init(void)
panic("Couldn't register /dev/tty0 driver\n");
kbd_init();
#else
// the below is a dodgy hack to allow keyboard/mouse support without the console support, along with the file "dummy_console.c"
#ifdef CONFIG_DUMMY_CONSOLE
kbd_init();
#endif
#endif
#ifdef CONFIG_ESPSERIAL /* init ESP before rs, so rs doesn't see the port */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.