| Index: gdb/serial.h
|
| diff --git a/gdb/serial.h b/gdb/serial.h
|
| index 02a3b2d4737ce701b1785506a8bc87df1f118062..b16406222957bcfc4ced7707e032e9e8011c74cd 100644
|
| --- a/gdb/serial.h
|
| +++ b/gdb/serial.h
|
| @@ -37,13 +37,18 @@ typedef void *serial_ttystate;
|
| struct serial;
|
|
|
| /* Try to open NAME. Returns a new `struct serial *' on success, NULL
|
| - on failure. Note that some open calls can block and, if possible,
|
| - should be written to be non-blocking, with calls to ui_look_hook
|
| - so they can be cancelled. An async interface for open could be
|
| - added to GDB if necessary. */
|
| + on failure. The new serial object has a reference count of 1.
|
| + Note that some open calls can block and, if possible, should be
|
| + written to be non-blocking, with calls to ui_look_hook so they can
|
| + be cancelled. An async interface for open could be added to GDB if
|
| + necessary. */
|
|
|
| extern struct serial *serial_open (const char *name);
|
|
|
| +/* Returns true if SCB is open. */
|
| +
|
| +extern int serial_is_open (struct serial *scb);
|
| +
|
| /* Find an already opened serial stream using a file handle. */
|
|
|
| extern struct serial *serial_for_fd (int fd);
|
| @@ -52,10 +57,18 @@ extern struct serial *serial_for_fd (int fd);
|
|
|
| extern struct serial *serial_fdopen (const int fd);
|
|
|
| -/* Push out all buffers, close the device and destroy SCB. */
|
| +/* Push out all buffers, close the device and unref SCB. */
|
|
|
| extern void serial_close (struct serial *scb);
|
|
|
| +/* Increment reference count of SCB. */
|
| +
|
| +extern void serial_ref (struct serial *scb);
|
| +
|
| +/* Decrement reference count of SCB. */
|
| +
|
| +extern void serial_unref (struct serial *scb);
|
| +
|
| /* Create a pipe, and put the read end in files[0], and the write end
|
| in filde[1]. Returns 0 for success, negative value for error (in
|
| which case errno contains the error). */
|
| @@ -213,6 +226,10 @@ extern int serial_debug_p (struct serial *scb);
|
|
|
| struct serial
|
| {
|
| + /* serial objects are ref counted (but not the underlying
|
| + connection, just the object's lifetime in memory). */
|
| + int refcnt;
|
| +
|
| int fd; /* File descriptor */
|
| /* File descriptor for a separate error stream that should be
|
| immediately forwarded to gdb_stderr. This may be -1.
|
| @@ -233,7 +250,6 @@ struct serial
|
| more seconds. */
|
| char *name; /* The name of the device or host */
|
| struct serial *next; /* Pointer to the next `struct serial *' */
|
| - int refcnt; /* Number of pointers to this block */
|
| int debug_p; /* Trace this serial devices operation. */
|
| int async_state; /* Async internal state. */
|
| void *async_context; /* Async event thread's context */
|
|
|