All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Molton <ian.molton@collabora.co.uk>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Device initialisation problem:
Date: Fri, 13 Nov 2009 18:30:46 +0000	[thread overview]
Message-ID: <4AFDA5D6.6090306@collabora.co.uk> (raw)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I'm trying to use the qption parser to parse my device option string,
which is formatted like this:

- -vrng dev=/dev/foo,rate=10K

and I mostly got things to work by using this, in vl.c:

static int virtio_rng_parse(const char *arg)
{
        QemuOpts *opts;

    if (strcmp(arg, "none") == 0) {
        return 0;
    }
    if (!strncmp(arg, "dev", 3)) {
        /* have params -> parse them */
        opts = qemu_opts_parse(&qemu_device_opts, arg, NULL);
        if (!opts)
            return  -1;
    } else {
        /* create empty opts */
        opts = qemu_opts_create(&qemu_device_opts, NULL, 0);
    }

    qemu_opt_set(opts, "driver", "virtio-rng-pci");

    return 0;
}

However when I tried to create my own opts layout so that I could take
advantage of the OPT_SIZE  option type, I ran into problems.

I defined the following:

QemuOptsList qemu_rng_opts = {
    .name = "virtio-rng-pci",
    .head = QTAILQ_HEAD_INITIALIZER(qemu_rng_opts.head),
    .desc = {
        {
            .name = "dev",
            .type = QEMU_OPT_STRING,
        },
        {
            .name = "rate",
            .type = QEMU_OPT_SIZE,
        },
        { /* end if list */ }
    }
};

And modified the code in vl.c to read:

static int virtio_rng_parse(const char *arg)
{
        QemuOpts *opts;

    if (strcmp(arg, "none") == 0) {
        return 0;
    }
    if (!strncmp(arg, "dev", 3)) {
        /* have params -> parse them */
        opts = qemu_opts_parse(&qemu_rng_opts, arg, NULL);
        if (!opts)
            return  -1;
    } else {
        /* create empty opts */
        opts = qemu_opts_create(&qemu_rng_opts, NULL, 0);
    }

//    qemu_opt_set(opts, "driver", "virtio-rng-pci");

    return 0;
}

But now my driver does not get registered.

So it seems I can use &qemu_device_opts and forego the nice parsing, or
I can get nice parsing and not have a device.

What am I missing here ?

- -Ian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJK/aXQAAoJEFIjE1w7L6YHvP0P/3/lGjI4B2zbfmlzLDtilxD+
ov1w5DezKcca8ib/u/v/q63mxuS2/n8cMsb4blAR2qgSP9QgVL1XRey0HfbOZFOe
K7HRlP+nqb80jBrpIMGlMBi4Y7AEJbzfxpWCGVyRYaOYl9KmF1pLnrfcbkVvbIww
5EV1VAPoR1364XJ+gJkx2HqRo2Y4CaQd3v+TAUmPXbGIhxVAfwNdeNp7CIXVnd3p
JibjGQCFkBv83NrBVozHo0OZP3+tEjek483/ouvY28EcxkrHqJ+VHbis+y/R1mud
9LeMDF7M8UleBy4wUfxtCQUZVdcoFmpAuo5rbzNA4fG+OfXtvy3SeEo/8gJ9C4b+
1rIkB2k7XluJmuZcWM+4YP/NiUo0c0K+EUzoRULesRsqo7ti/KvnrK+HIiVJRnns
WHVQ9I7b9YTyPYPifPd4A6nZwdzLvjbtrpr/ww+WTk7tp3xDkrQ3JadCdpgEbmjj
yMIIg7Gqep0pBlrJkqUKfumfyxK4d0j3nRSqx3PFPysisEauPYNhjUL4ILX/9IKf
5YrA1nYEwtn33RjRTKPt/Bp8m7z8nBJN33LTI6YJS0IPCdTRZajwiN7YkhtZ5kBz
U2p0Yvmo7yzNFU3pXCs8C4TfIdzOOnKh3APFVZgR1+Bzm8SMeo69vGNhrXOyIh5Y
28888cHL9Jovri04HrBb
=NLeC
-----END PGP SIGNATURE-----

             reply	other threads:[~2009-11-13 18:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-13 18:30 Ian Molton [this message]
2009-11-14  1:38 ` [Qemu-devel] Device initialisation problem: partially solved Ian Molton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AFDA5D6.6090306@collabora.co.uk \
    --to=ian.molton@collabora.co.uk \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.