Am 03.04.2014 10:46, schrieb Stefan Hajnoczi: > On Wed, Apr 02, 2014 at 04:57:48PM +0200, Andreas Färber wrote: >> +int main(int argc, char **argv) >> +{ >> + QTestState *s1, *s2; >> + char *cmd; >> + int ret; >> + >> + g_test_init(&argc, &argv, NULL); >> + qtest_add_func("/ivshmem/nop", nop); >> + >> + cmd = g_strdup_printf("-device ivshmem,shm=%s,size=1M", "qtest"); > > This test leaks the "qtest" shm object that gets created by the first > QEMU process. The name is constant so two instances of the test cannot > run in parallel on the same machine (the objects go in /dev/shm).
Right. Therefore it's already using %s and not a fully hardcoded string. > The name should be unique and we should clean up in both success and > failure (abort(3)) cases. The recipe for unique filenames elsewhere is mkstemp(), which I was planning to use here as well using "/dev/shm/qtest.XXXXXX" and then to somehow strip the /dev/shm/ part, e.g. &...[9]. However I do not see any existing test specially cleaning up such temporary files on SIGABRT rather than just on success. Do you have a pointer or suggestion how to do that? Still the actual question of this RFC is, how do I detect whether we may run this test at all? 1) Relying on being run in the build directory, we could try to peek at $arch-softmmu/config-target.mak, looking for CONFIG_KVM. Ugly. 2) Determine via QMP whether KVM is available in the QEMU binary. How? Involves an additional process before launching the actual process with -device ivshmem. 3) Determine via QMP whether the device QOM type is available in the QEMU binary. Involves an additional process. 4) Make ivshmem build independent of CONFIG_KVM. Too much work for a single out of many test cases. 5) ??? Thanks, Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg