From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N90vR-0000ET-Ka for qemu-devel@nongnu.org; Fri, 13 Nov 2009 13:31:13 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N90vQ-0000Cs-1Z for qemu-devel@nongnu.org; Fri, 13 Nov 2009 13:31:13 -0500 Received: from [199.232.76.173] (port=50640 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N90vP-0000Cj-Uk for qemu-devel@nongnu.org; Fri, 13 Nov 2009 13:31:11 -0500 Received: from bhuna.collabora.co.uk ([93.93.128.226]:33334) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1N90vP-00083e-Fm for qemu-devel@nongnu.org; Fri, 13 Nov 2009 13:31:11 -0500 Received: from [192.168.1.64] (94-192-117-31.zone6.bethere.co.uk [94.192.117.31]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 773396012BB for ; Fri, 13 Nov 2009 18:31:09 +0000 (GMT) Message-ID: <4AFDA5D6.6090306@collabora.co.uk> Date: Fri, 13 Nov 2009 18:30:46 +0000 From: Ian Molton MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Device initialisation problem: List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org -----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-----