diff options
author | Tom Tromey <tromey@redhat.com> | 2013-12-06 11:34:49 -0700 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-12-19 08:50:48 -0700 |
commit | 12e8c7d7c2af309b8fd6bf0f61e99b0a6aad4c80 (patch) | |
tree | e0dffbb79fb883c98ebbcac865ab686ca74d36cf /gdb/ser-tcp.c | |
parent | fcd488ca4e57141ac8ad28b6a5f560f3b9753a67 (diff) | |
download | gdb-12e8c7d7c2af309b8fd6bf0f61e99b0a6aad4c80.zip gdb-12e8c7d7c2af309b8fd6bf0f61e99b0a6aad4c80.tar.gz gdb-12e8c7d7c2af309b8fd6bf0f61e99b0a6aad4c80.tar.bz2 |
don't allocate serial_ops
Now that struct serial_ops is const everywhere, we can easily turn the
instances into globals. This patch implements this idea.
On the one hand I think this is nicer since it makes a bit more data
readonly and slightly reduces allocations. On the other hand it
reduces readability somewhat.
If the readability is a concern to anyone I was thinking I could write
a macro that conditionally uses GCC's designated initializer
extension.
Tested by rebuilding on x86-64 Fedora 18, both natively and using the
mingw cross tools.
2013-12-19 Tom Tromey <tromey@redhat.com>
* ser-unix.c (hardwire_ops): New global.
(_initialize_ser_hardwire): Use it.
* ser-tcp.c (tcp_ops): New global.
(_initialize_ser_tcp): Use it.
* ser-pipe.c (pipe_ops): New global.
(_initialize_ser_pipe): Use it.
* ser-mingw.c (hardwire_ops, tty_ops, pipe_ops, tcp_ops): New
globals.
(_initialize_ser_windows): Use them.
Diffstat (limited to 'gdb/ser-tcp.c')
-rw-r--r-- | gdb/ser-tcp.c | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c index c5c5600..2dd342c 100644 --- a/gdb/ser-tcp.c +++ b/gdb/ser-tcp.c @@ -372,6 +372,36 @@ show_tcp_cmd (char *args, int from_tty) help_list (tcp_show_cmdlist, "show tcp ", -1, gdb_stdout); } +#ifndef USE_WIN32API + +/* The TCP ops. */ + +static const struct serial_ops tcp_ops = +{ + "tcp", + net_open, + net_close, + NULL, + ser_base_readchar, + ser_base_write, + ser_base_flush_output, + ser_base_flush_input, + ser_tcp_send_break, + ser_base_raw, + ser_base_get_tty_state, + ser_base_copy_tty_state, + ser_base_set_tty_state, + ser_base_print_tty_state, + ser_base_noflush_set_tty_state, + ser_base_setbaudrate, + ser_base_setstopbits, + ser_base_drain_output, + ser_base_async, + net_read_prim, + net_write_prim +}; + +#endif /* USE_WIN32API */ void _initialize_ser_tcp (void) @@ -380,31 +410,7 @@ _initialize_ser_tcp (void) /* Do nothing; the TCP serial operations will be initialized in ser-mingw.c. */ #else - struct serial_ops *ops; - - ops = XMALLOC (struct serial_ops); - memset (ops, 0, sizeof (struct serial_ops)); - ops->name = "tcp"; - ops->open = net_open; - ops->close = net_close; - ops->readchar = ser_base_readchar; - ops->write = ser_base_write; - ops->flush_output = ser_base_flush_output; - ops->flush_input = ser_base_flush_input; - ops->send_break = ser_tcp_send_break; - ops->go_raw = ser_base_raw; - ops->get_tty_state = ser_base_get_tty_state; - ops->copy_tty_state = ser_base_copy_tty_state; - ops->set_tty_state = ser_base_set_tty_state; - ops->print_tty_state = ser_base_print_tty_state; - ops->noflush_set_tty_state = ser_base_noflush_set_tty_state; - ops->setbaudrate = ser_base_setbaudrate; - ops->setstopbits = ser_base_setstopbits; - ops->drain_output = ser_base_drain_output; - ops->async = ser_base_async; - ops->read_prim = net_read_prim; - ops->write_prim = net_write_prim; - serial_add_interface (ops); + serial_add_interface (&tcp_ops); #endif /* USE_WIN32API */ add_prefix_cmd ("tcp", class_maintenance, set_tcp_cmd, _("\ |