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-unix.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-unix.c')
-rw-r--r-- | gdb/ser-unix.c | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c index d8e4294..bd8d433 100644 --- a/gdb/ser-unix.c +++ b/gdb/ser-unix.c @@ -905,36 +905,41 @@ hardwire_close (struct serial *scb) } -void -_initialize_ser_hardwire (void) -{ - struct serial_ops *ops = XMALLOC (struct serial_ops); - memset (ops, 0, sizeof (struct serial_ops)); - ops->name = "hardwire"; - ops->open = hardwire_open; - ops->close = hardwire_close; +/* The hardwire ops. */ + +static const struct serial_ops hardwire_ops = +{ + "hardwire", + hardwire_open, + hardwire_close, + NULL, /* FIXME: Don't replace this with the equivalent ser_base*() until the old TERMIOS/SGTTY/... timer code has been flushed. cagney 1999-09-16. */ - ops->readchar = hardwire_readchar; - ops->write = ser_base_write; - ops->flush_output = hardwire_flush_output; - ops->flush_input = hardwire_flush_input; - ops->send_break = hardwire_send_break; - ops->go_raw = hardwire_raw; - ops->get_tty_state = hardwire_get_tty_state; - ops->copy_tty_state = hardwire_copy_tty_state; - ops->set_tty_state = hardwire_set_tty_state; - ops->print_tty_state = hardwire_print_tty_state; - ops->noflush_set_tty_state = hardwire_noflush_set_tty_state; - ops->setbaudrate = hardwire_setbaudrate; - ops->setstopbits = hardwire_setstopbits; - ops->drain_output = hardwire_drain_output; - ops->async = ser_base_async; - ops->read_prim = ser_unix_read_prim; - ops->write_prim = ser_unix_write_prim; - serial_add_interface (ops); + hardwire_readchar, + ser_base_write, + hardwire_flush_output, + hardwire_flush_input, + hardwire_send_break, + hardwire_raw, + hardwire_get_tty_state, + hardwire_copy_tty_state, + hardwire_set_tty_state, + hardwire_print_tty_state, + hardwire_noflush_set_tty_state, + hardwire_setbaudrate, + hardwire_setstopbits, + hardwire_drain_output, + ser_base_async, + ser_unix_read_prim, + ser_unix_write_prim +}; + +void +_initialize_ser_hardwire (void) +{ + serial_add_interface (&hardwire_ops); #ifdef HAVE_TERMIOS #ifdef CRTSCTS |