| 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 */
 | 
| 
 |