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