From ccbae88965eadba00af7256362c845c6e9a8b135 Mon Sep 17 00:00:00 2001 From: Steve Chamberlain Date: Tue, 31 Jan 1995 19:30:27 +0000 Subject: From nigel@algor.co.uk. * ser-go32.c (dos_close): Don't crash if scb null. (dos_sendbreak): New function. (dos_ops): Point to dos_sendbreak. (dos_info): Calculate COM number correctly. --- gdb/ChangeLog | 8 ++++++++ gdb/ser-go32.c | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ef0787..5340058 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +Tue Jan 31 11:14:44 1995 Steve Chamberlain + + From nigel@algor.co.uk. + * ser-go32.c (dos_close): Don't crash if scb null. + (dos_sendbreak): New function. + (dos_ops): Point to dos_sendbreak. + (dos_info): Calculate COM number correctly. + Tue Jan 31 09:40:11 1995 Jim Kingdon (kingdon@lioth.cygnus.com) * xcoffread.c (process_xcoff_symbol): Use new variables diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c index 70887f0..a1c0b6e 100644 --- a/gdb/ser-go32.c +++ b/gdb/ser-go32.c @@ -552,9 +552,13 @@ static void dos_close (scb) serial_t scb; { - struct dos_ttystate *port = &ports[scb->fd]; + struct dos_ttystate *port; struct intrupt *intrupt; + if (!scb) + return; + + port = &ports[scb->fd]; if (!(intrupt = port->intrupt)) return; @@ -768,6 +772,28 @@ dos_write (scb, str, len) return 0; } + +static int +dos_sendbreak (scb) + serial_t scb; +{ + volatile struct dos_ttystate *port = &ports[scb->fd]; + unsigned char cfcr; + long then; + + cfcr = inb(port, com_cfcr); + outb(port, com_cfcr, cfcr | CFCR_SBREAK); + + /* 0.25 sec delay */ + then = rawclock () + RAWHZ / 4; + while ((rawclock () - then) < 0) + continue; + + outb(port, com_cfcr, cfcr); + return 0; +} + + static struct serial_ops dos_ops = { "hardwire", @@ -778,7 +804,7 @@ static struct serial_ops dos_ops = dos_write, dos_noop, /* flush output */ dos_flush_input, - dos_noop, /* send break -- currently used only for nindy */ + dos_sendbreak, dos_raw, dos_get_tty_state, dos_set_tty_state, @@ -800,12 +826,12 @@ dos_info (arg, from_tty) { if (port->baudrate == 0) continue; - printf_filtered ("Port:\tCOM%d (%sactive)\n", port - ports, + printf_filtered ("Port:\tCOM%d (%sactive)\n", port - ports + 1, port->intrupt ? "" : "not "); printf_filtered ("Addr:\t0x%03x (irq %d)\n", port->base, port->irq); printf_filtered ("16550:\t%s\n", port->fifo ? "yes" : "no"); printf_filtered ("Speed:\t%d baud\n", port->baudrate); - printf_filtered ("Errs:\tframing %d parity %d overflow %d\n", + printf_filtered ("Errs:\tframing %d parity %d overflow %d\n\n", port->ferr, port->perr, port->oflo); } -- cgit v1.1