Commit 9bba618f authored by Peter Maydell's avatar Peter Maydell
Browse files

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: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 5093f028 27d4c378
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -450,12 +450,12 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
    }
    }
    if (strstart(filename, "/dev/parport", NULL) ||
    if (strstart(filename, "/dev/parport", NULL) ||
        strstart(filename, "/dev/ppi", 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);
        qemu_opt_set(opts, "path", filename, &error_abort);
        return opts;
        return opts;
    }
    }
    if (strstart(filename, "/dev/", NULL)) {
    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);
        qemu_opt_set(opts, "path", filename, &error_abort);
        return opts;
        return opts;
    }
    }
+0 −5
Original line number Original line Diff line number Diff line
@@ -26,11 +26,6 @@


#include "chardev/char.h"
#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_READ_DATA        3
#define CHR_IOCTL_PP_WRITE_DATA       4
#define CHR_IOCTL_PP_WRITE_DATA       4
#define CHR_IOCTL_PP_READ_CONTROL     5
#define CHR_IOCTL_PP_READ_CONTROL     5
+0 −8
Original line number Original line Diff line number Diff line
@@ -26,14 +26,6 @@


#include "chardev/char.h"
#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
#define CHR_IOCTL_SERIAL_SET_PARAMS   1
typedef struct {
typedef struct {
    int speed;
    int speed;
+13 −0
Original line number Original line Diff line number Diff line
@@ -284,6 +284,19 @@ void qemu_anon_ram_free(void *ptr, size_t size);


#endif
#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)
#if defined(CONFIG_LINUX)
#ifndef BUS_MCEERR_AR
#ifndef BUS_MCEERR_AR
#define BUS_MCEERR_AR 4
#define BUS_MCEERR_AR 4
+29 −0
Original line number Original line Diff line number Diff line
@@ -450,6 +450,32 @@ static void char_udp_test(void)
    g_free(tmp);
    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)
static void char_file_test(void)
{
{
    char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL);
    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/file", char_file_test);
    g_test_add_func("/char/socket", char_socket_test);
    g_test_add_func("/char/socket", char_socket_test);
    g_test_add_func("/char/udp", char_udp_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();
    return g_test_run();
}
}