* printcmd.c (print_address_symbolic): turn this into an assigment
[deliverable/binutils-gdb.git] / gdb / serial.h
CommitLineData
b52373a2 1/* Remote serial support interface definitions for GDB, the GNU Debugger.
f24c159f 2 Copyright 1992, 1993 Free Software Foundation, Inc.
ae0ea72e
SC
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
19
4e772f44 20/* Terminal state pointer. This is specific to each type of interface. */
5fe93239 21
4e772f44 22typedef PTR ttystate;
5fe93239 23
4e772f44
SG
24struct _serial_t
25{
372d09c3
JK
26 int fd; /* File descriptor */
27 struct serial_ops *ops; /* Function vector */
28 ttystate ttystate; /* Not used (yet) */
29 int bufcnt; /* Amount of data in receive buffer */
30 unsigned char *bufp; /* Current byte */
31 unsigned char buf[BUFSIZ]; /* Da buffer itself */
32 int current_timeout; /* (termio{s} only), last value of VTIME */
f24c159f
JG
33};
34
4e772f44
SG
35typedef struct _serial_t *serial_t;
36
37struct serial_ops {
38 char *name;
39 struct serial_ops *next;
40 int (*open) PARAMS ((serial_t, const char *name));
41 void (*close) PARAMS ((serial_t));
42 int (*readchar) PARAMS ((serial_t, int timeout));
43 int (*write) PARAMS ((serial_t, const char *str, int len));
44 void (*go_raw) PARAMS ((serial_t));
45 void (*restore) PARAMS ((serial_t));
46 int (*setbaudrate) PARAMS ((serial_t, int rate));
ed3f6049
SG
47};
48
4e772f44 49/* Add a new serial interface to the interface list */
ed3f6049 50
4e772f44 51void serial_add_interface PARAMS ((struct serial_ops *optable));
ed3f6049 52
4e772f44 53serial_t serial_open PARAMS ((const char *name));
ae0ea72e 54
4febd102
SG
55/* For most routines, if a failure is indicated, then errno should be
56 examined. */
57
58/* Try to open NAME. Returns a new serial_t on success, NULL on failure.
59 */
ae0ea72e 60
4febd102 61#define SERIAL_OPEN(NAME) serial_open(NAME)
ae0ea72e 62
4febd102 63/* Turn the port into raw mode. */
ae0ea72e 64
4e772f44 65#define SERIAL_RAW(SERIAL_T) (SERIAL_T)->ops->go_raw((SERIAL_T))
ae0ea72e 66
4febd102
SG
67/* Read one char from the serial device with TIMEOUT seconds timeout.
68 Returns char if ok, else one of the following codes. Note that all
69 error codes are guaranteed to be < 0. */
70
71#define SERIAL_ERROR -1 /* General error, see errno for details */
72#define SERIAL_TIMEOUT -2
73#define SERIAL_EOF -3
ae0ea72e 74
4e772f44 75#define SERIAL_READCHAR(SERIAL_T, TIMEOUT) ((SERIAL_T)->ops->readchar((SERIAL_T), TIMEOUT))
ae0ea72e 76
4febd102
SG
77/* Set the baudrate to the decimal value supplied. Returns 0 for success,
78 -1 for failure. */
ae0ea72e 79
4e772f44 80#define SERIAL_SETBAUDRATE(SERIAL_T, RATE) ((SERIAL_T)->ops->setbaudrate((SERIAL_T), RATE))
ae0ea72e 81
4febd102
SG
82/* Write LEN chars from STRING to the port SERIAL_T. Returns 0 for success,
83 -1 for failure. */
ae0ea72e 84
4e772f44 85#define SERIAL_WRITE(SERIAL_T, STRING, LEN) ((SERIAL_T)->ops->write((SERIAL_T), STRING, LEN))
ae0ea72e 86
4febd102
SG
87/* Push out all buffers, close the device and destroy SERIAL_T. */
88
89void serial_close PARAMS ((serial_t));
ae0ea72e 90
4febd102 91#define SERIAL_CLOSE(SERIAL_T) serial_close(SERIAL_T)
740b7efa 92
4febd102
SG
93/* Restore the serial port to the state saved in oldstate. XXX - currently
94 unused! */
740b7efa 95
4e772f44 96#define SERIAL_RESTORE(SERIAL_T) (SERIAL_T)->ops->restore((SERIAL_T))
This page took 0.086044 seconds and 4 git commands to generate.