| OLD | NEW |
| 1 /* Remote serial support interface definitions for GDB, the GNU Debugger. | 1 /* Remote serial support interface definitions for GDB, the GNU Debugger. |
| 2 Copyright (C) 1992-1996, 1998-2001, 2004-2012 Free Software | 2 Copyright (C) 1992-1996, 1998-2001, 2004-2012 Free Software |
| 3 Foundation, Inc. | 3 Foundation, Inc. |
| 4 | 4 |
| 5 This file is part of GDB. | 5 This file is part of GDB. |
| 6 | 6 |
| 7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
| 8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
| 9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
| 10 (at your option) any later version. | 10 (at your option) any later version. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 /* For most routines, if a failure is indicated, then errno should be | 30 /* For most routines, if a failure is indicated, then errno should be |
| 31 examined. */ | 31 examined. */ |
| 32 | 32 |
| 33 /* Terminal state pointer. This is specific to each type of | 33 /* Terminal state pointer. This is specific to each type of |
| 34 interface. */ | 34 interface. */ |
| 35 | 35 |
| 36 typedef void *serial_ttystate; | 36 typedef void *serial_ttystate; |
| 37 struct serial; | 37 struct serial; |
| 38 | 38 |
| 39 /* Try to open NAME. Returns a new `struct serial *' on success, NULL | 39 /* Try to open NAME. Returns a new `struct serial *' on success, NULL |
| 40 on failure. Note that some open calls can block and, if possible, | 40 on failure. The new serial object has a reference count of 1. |
| 41 should be written to be non-blocking, with calls to ui_look_hook | 41 Note that some open calls can block and, if possible, should be |
| 42 so they can be cancelled. An async interface for open could be | 42 written to be non-blocking, with calls to ui_look_hook so they can |
| 43 added to GDB if necessary. */ | 43 be cancelled. An async interface for open could be added to GDB if |
| 44 necessary. */ |
| 44 | 45 |
| 45 extern struct serial *serial_open (const char *name); | 46 extern struct serial *serial_open (const char *name); |
| 46 | 47 |
| 48 /* Returns true if SCB is open. */ |
| 49 |
| 50 extern int serial_is_open (struct serial *scb); |
| 51 |
| 47 /* Find an already opened serial stream using a file handle. */ | 52 /* Find an already opened serial stream using a file handle. */ |
| 48 | 53 |
| 49 extern struct serial *serial_for_fd (int fd); | 54 extern struct serial *serial_for_fd (int fd); |
| 50 | 55 |
| 51 /* Open a new serial stream using a file handle. */ | 56 /* Open a new serial stream using a file handle. */ |
| 52 | 57 |
| 53 extern struct serial *serial_fdopen (const int fd); | 58 extern struct serial *serial_fdopen (const int fd); |
| 54 | 59 |
| 55 /* Push out all buffers, close the device and destroy SCB. */ | 60 /* Push out all buffers, close the device and unref SCB. */ |
| 56 | 61 |
| 57 extern void serial_close (struct serial *scb); | 62 extern void serial_close (struct serial *scb); |
| 58 | 63 |
| 64 /* Increment reference count of SCB. */ |
| 65 |
| 66 extern void serial_ref (struct serial *scb); |
| 67 |
| 68 /* Decrement reference count of SCB. */ |
| 69 |
| 70 extern void serial_unref (struct serial *scb); |
| 71 |
| 59 /* Create a pipe, and put the read end in files[0], and the write end | 72 /* Create a pipe, and put the read end in files[0], and the write end |
| 60 in filde[1]. Returns 0 for success, negative value for error (in | 73 in filde[1]. Returns 0 for success, negative value for error (in |
| 61 which case errno contains the error). */ | 74 which case errno contains the error). */ |
| 62 | 75 |
| 63 extern int gdb_pipe (int fildes[2]); | 76 extern int gdb_pipe (int fildes[2]); |
| 64 | 77 |
| 65 /* Create a pipe with each end wrapped in a `struct serial' interface. | 78 /* Create a pipe with each end wrapped in a `struct serial' interface. |
| 66 Put the read end in scbs[0], and the write end in scbs[1]. Returns | 79 Put the read end in scbs[0], and the write end in scbs[1]. Returns |
| 67 0 for success, negative value for error (in which case errno | 80 0 for success, negative value for error (in which case errno |
| 68 contains the error). */ | 81 contains the error). */ |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 | 219 |
| 207 extern void serial_debug (struct serial *scb, int debug_p); | 220 extern void serial_debug (struct serial *scb, int debug_p); |
| 208 | 221 |
| 209 extern int serial_debug_p (struct serial *scb); | 222 extern int serial_debug_p (struct serial *scb); |
| 210 | 223 |
| 211 | 224 |
| 212 /* Details of an instance of a serial object. */ | 225 /* Details of an instance of a serial object. */ |
| 213 | 226 |
| 214 struct serial | 227 struct serial |
| 215 { | 228 { |
| 229 /* serial objects are ref counted (but not the underlying |
| 230 connection, just the object's lifetime in memory). */ |
| 231 int refcnt; |
| 232 |
| 216 int fd; /* File descriptor */ | 233 int fd; /* File descriptor */ |
| 217 /* File descriptor for a separate error stream that should be | 234 /* File descriptor for a separate error stream that should be |
| 218 immediately forwarded to gdb_stderr. This may be -1. | 235 immediately forwarded to gdb_stderr. This may be -1. |
| 219 If != -1, this descriptor should be non-blocking or | 236 If != -1, this descriptor should be non-blocking or |
| 220 ops->avail should be non-NULL. */ | 237 ops->avail should be non-NULL. */ |
| 221 int error_fd; | 238 int error_fd; |
| 222 struct serial_ops *ops; /* Function vector */ | 239 struct serial_ops *ops; /* Function vector */ |
| 223 void *state; /* Local context info for open FD */ | 240 void *state; /* Local context info for open FD */ |
| 224 serial_ttystate ttystate; /* Not used (yet) */ | 241 serial_ttystate ttystate; /* Not used (yet) */ |
| 225 int bufcnt; /* Amount of data remaining in receive | 242 int bufcnt; /* Amount of data remaining in receive |
| 226 buffer. -ve for sticky errors. */ | 243 buffer. -ve for sticky errors. */ |
| 227 unsigned char *bufp; /* Current byte */ | 244 unsigned char *bufp; /* Current byte */ |
| 228 unsigned char buf[BUFSIZ]; /* Da buffer itself */ | 245 unsigned char buf[BUFSIZ]; /* Da buffer itself */ |
| 229 int current_timeout; /* (ser-unix.c termio{,s} only), last | 246 int current_timeout; /* (ser-unix.c termio{,s} only), last |
| 230 value of VTIME */ | 247 value of VTIME */ |
| 231 int timeout_remaining; /* (ser-unix.c termio{,s} only), we | 248 int timeout_remaining; /* (ser-unix.c termio{,s} only), we |
| 232 still need to wait for this many | 249 still need to wait for this many |
| 233 more seconds. */ | 250 more seconds. */ |
| 234 char *name; /* The name of the device or host */ | 251 char *name; /* The name of the device or host */ |
| 235 struct serial *next; /* Pointer to the next `struct serial *' */ | 252 struct serial *next; /* Pointer to the next `struct serial *' */ |
| 236 int refcnt; /* Number of pointers to this block */ | |
| 237 int debug_p; /* Trace this serial devices operation. */ | 253 int debug_p; /* Trace this serial devices operation. */ |
| 238 int async_state; /* Async internal state. */ | 254 int async_state; /* Async internal state. */ |
| 239 void *async_context; /* Async event thread's context */ | 255 void *async_context; /* Async event thread's context */ |
| 240 serial_event_ftype *async_handler;/* Async event handler */ | 256 serial_event_ftype *async_handler;/* Async event handler */ |
| 241 }; | 257 }; |
| 242 | 258 |
| 243 struct serial_ops | 259 struct serial_ops |
| 244 { | 260 { |
| 245 char *name; | 261 char *name; |
| 246 struct serial_ops *next; | 262 struct serial_ops *next; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 /* Windows-only: find or create handles that we can wait on for this | 320 /* Windows-only: find or create handles that we can wait on for this |
| 305 serial device. */ | 321 serial device. */ |
| 306 extern void serial_wait_handle (struct serial *, HANDLE *, HANDLE *); | 322 extern void serial_wait_handle (struct serial *, HANDLE *, HANDLE *); |
| 307 | 323 |
| 308 /* Windows-only: signal that we are done with the wait handles. */ | 324 /* Windows-only: signal that we are done with the wait handles. */ |
| 309 extern void serial_done_wait_handle (struct serial *); | 325 extern void serial_done_wait_handle (struct serial *); |
| 310 | 326 |
| 311 #endif /* USE_WIN32API */ | 327 #endif /* USE_WIN32API */ |
| 312 | 328 |
| 313 #endif /* SERIAL_H */ | 329 #endif /* SERIAL_H */ |
| OLD | NEW |