aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/serial.h
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-03-23 09:48:06 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-03-23 09:48:06 +0000
commit2a5f90e8e88330b026e79c1a3c38a711f545c167 (patch)
treecaa5435c339291cc581777a52e4981c75b77260d /xen/include/xen/serial.h
parentc2929ecdf6cba5d5e5fd09c52e465e5f4a22fb83 (diff)
downloadxen-2a5f90e8e88330b026e79c1a3c38a711f545c167.tar.gz
xen-2a5f90e8e88330b026e79c1a3c38a711f545c167.tar.bz2
xen-2a5f90e8e88330b026e79c1a3c38a711f545c167.zip
bitkeeper revision 1.821 (406007d6uu0vZYDxa9P1ZfNO9kF_Cg)
Many files: xeno -> xen renames. ide-xen.c: Rename: xen/drivers/ide/ide-xeno.c -> xen/drivers/ide/ide-xen.c xen.lds: Rename: xen/arch/i386/xeno.lds -> xen/arch/i386/xen.lds Many files: mvdir
Diffstat (limited to 'xen/include/xen/serial.h')
-rw-r--r--xen/include/xen/serial.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
new file mode 100644
index 0000000000..3640fd036f
--- /dev/null
+++ b/xen/include/xen/serial.h
@@ -0,0 +1,46 @@
+/******************************************************************************
+ * serial.h
+ *
+ * Driver for 16550-series UARTs. This driver is to be kept within Xen as
+ * it permits debugging of seriously-toasted machines (e.g., in situations
+ * where a device driver within a guest OS would be inaccessible).
+ *
+ * Copyright (c) 2003-2004, K A Fraser
+ */
+
+#ifndef __XEN_SERIAL_H__
+#define __XEN_SERIAL_H__
+
+#include <asm/ptrace.h>
+
+/* 'Serial handles' are comprise the following fields. */
+#define SERHND_IDX (1<<0) /* COM1 or COM2? */
+#define SERHND_HI (1<<1) /* Mux/demux each transferred char by MSB. */
+#define SERHND_LO (1<<2) /* Ditto, except that the MSB is cleared. */
+#define SERHND_COOKED (1<<3) /* Newline/carriage-return translation? */
+
+/* Two-stage initialisation (before/after IRQ-subsystem initialisation). */
+void serial_init_stage1(void);
+void serial_init_stage2(void);
+
+/* Takes a config string and creates a numeric handle on the COM port. */
+int parse_serial_handle(char *conf);
+
+/* Register a character-receive hook on the specified COM port. */
+typedef void (*serial_rx_fn)(unsigned char, struct pt_regs *);
+void serial_set_rx_handler(int handle, serial_rx_fn fn);
+
+/* Transmit a single character via the specified COM port. */
+void serial_putc(int handle, unsigned char c);
+
+/* Transmit a NULL-terminated string via the specified COM port. */
+void serial_puts(int handle, const unsigned char *s);
+
+/*
+ * An alternative to registering a character-receive hook. This function
+ * will not return until a character is available. It can safely be
+ * called with interrupts disabled.
+ */
+unsigned char serial_getc(int handle);
+
+#endif /* __XEN_SERIAL_H__ */