diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-06-12 19:26:49 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-06-12 19:26:49 +0100 |
commit | 9bba618f18b1a60a3f2668db82b453f6cd9467c0 (patch) | |
tree | 25f0ecb76346ccbe6331c8e38fd74a8b1f30be6f | |
parent | 5093f028ce6529034efc8fdc06cec2aa2e2eea63 (diff) | |
parent | 27d4c3789ddde40e1c7280150b46eb20a6a892e6 (diff) |
Merge remote-tracking branch 'remotes/elmarco/tags/char-pull-request' into staging
# gpg: Signature made Thu 08 Jun 2017 15:12:11 BST
# gpg: using RSA key 0xDAE8E10975969CE5
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>"
# gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg: It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5
* remotes/elmarco/tags/char-pull-request:
test-char: start a /char/serial test
chardev: don't use alias names in parse_compat()
char: fix alias devices regression
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | chardev/char.c | 4 | ||||
-rw-r--r-- | include/chardev/char-parallel.h | 5 | ||||
-rw-r--r-- | include/chardev/char-serial.h | 8 | ||||
-rw-r--r-- | include/qemu/osdep.h | 13 | ||||
-rw-r--r-- | tests/test-char.c | 29 |
5 files changed, 44 insertions, 15 deletions
diff --git a/chardev/char.c b/chardev/char.c index 7aa0210765..bcfc065d16 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -450,12 +450,12 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename) } if (strstart(filename, "/dev/parport", NULL) || strstart(filename, "/dev/ppi", NULL)) { - qemu_opt_set(opts, "backend", "parport", &error_abort); + qemu_opt_set(opts, "backend", "parallel", &error_abort); qemu_opt_set(opts, "path", filename, &error_abort); return opts; } if (strstart(filename, "/dev/", NULL)) { - qemu_opt_set(opts, "backend", "tty", &error_abort); + qemu_opt_set(opts, "backend", "serial", &error_abort); qemu_opt_set(opts, "path", filename, &error_abort); return opts; } diff --git a/include/chardev/char-parallel.h b/include/chardev/char-parallel.h index 3284a1b96b..c09751fd6c 100644 --- a/include/chardev/char-parallel.h +++ b/include/chardev/char-parallel.h @@ -26,11 +26,6 @@ #include "chardev/char.h" -#if defined(__linux__) || defined(__FreeBSD__) || \ - defined(__FreeBSD_kernel__) || defined(__DragonFly__) -#define HAVE_CHARDEV_PARPORT 1 -#endif - #define CHR_IOCTL_PP_READ_DATA 3 #define CHR_IOCTL_PP_WRITE_DATA 4 #define CHR_IOCTL_PP_READ_CONTROL 5 diff --git a/include/chardev/char-serial.h b/include/chardev/char-serial.h index cb2e59e82a..ad6891b26d 100644 --- a/include/chardev/char-serial.h +++ b/include/chardev/char-serial.h @@ -26,14 +26,6 @@ #include "chardev/char.h" -#ifdef _WIN32 -#define HAVE_CHARDEV_SERIAL 1 -#elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ - || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \ - || defined(__GLIBC__) -#define HAVE_CHARDEV_SERIAL 1 -#endif - #define CHR_IOCTL_SERIAL_SET_PARAMS 1 typedef struct { int speed; diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 1c9f5e260c..fb008a2e65 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -284,6 +284,19 @@ void qemu_anon_ram_free(void *ptr, size_t size); #endif +#ifdef _WIN32 +#define HAVE_CHARDEV_SERIAL 1 +#elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \ + || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \ + || defined(__GLIBC__) +#define HAVE_CHARDEV_SERIAL 1 +#endif + +#if defined(__linux__) || defined(__FreeBSD__) || \ + defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#define HAVE_CHARDEV_PARPORT 1 +#endif + #if defined(CONFIG_LINUX) #ifndef BUS_MCEERR_AR #define BUS_MCEERR_AR 4 diff --git a/tests/test-char.c b/tests/test-char.c index dfe856cb85..9e361c8d09 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -450,6 +450,32 @@ static void char_udp_test(void) g_free(tmp); } +#ifdef HAVE_CHARDEV_SERIAL +static void char_serial_test(void) +{ + QemuOpts *opts; + Chardev *chr; + + opts = qemu_opts_create(qemu_find_opts("chardev"), "serial-id", + 1, &error_abort); + qemu_opt_set(opts, "backend", "serial", &error_abort); + qemu_opt_set(opts, "path", "/dev/null", &error_abort); + + chr = qemu_chr_new_from_opts(opts, NULL); + g_assert_nonnull(chr); + /* TODO: add more tests with a pty */ + object_unparent(OBJECT(chr)); + + /* test tty alias */ + qemu_opt_set(opts, "backend", "tty", &error_abort); + chr = qemu_chr_new_from_opts(opts, NULL); + g_assert_nonnull(chr); + object_unparent(OBJECT(chr)); + + qemu_opts_del(opts); +} +#endif + static void char_file_test(void) { char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); @@ -597,6 +623,9 @@ int main(int argc, char **argv) g_test_add_func("/char/file", char_file_test); g_test_add_func("/char/socket", char_socket_test); g_test_add_func("/char/udp", char_udp_test); +#ifdef HAVE_CHARDEV_SERIAL + g_test_add_func("/char/serial", char_serial_test); +#endif return g_test_run(); } |