qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-9.1 v2 09/11] hostmem: add a new memory backend based on


From: Stefano Garzarella
Subject: Re: [PATCH for-9.1 v2 09/11] hostmem: add a new memory backend based on POSIX shm_open()
Date: Wed, 27 Mar 2024 11:23:42 +0100

On Tue, Mar 26, 2024 at 03:45:52PM +0100, David Hildenbrand wrote:
+    mode = 0;
+    oflag = O_RDWR | O_CREAT | O_EXCL;
+    backend_name = host_memory_backend_get_name(backend);
+
+    /*
+     * Some operating systems allow creating anonymous POSIX shared memory
+     * objects (e.g. FreeBSD provides the SHM_ANON constant), but this is not
+     * defined by POSIX, so let's create a unique name.
+     *
+     * From Linux's shm_open(3) man-page:
+     *   For  portable  use,  a shared  memory  object should be identified
+     *   by a name of the form /somename;"
+     */
+    g_string_printf(shm_name, "/qemu-" FMT_pid "-shm-%s", getpid(),
+                    backend_name);

Hm, shouldn't we just let the user specify a name, and if no name was specified, generate one ourselves?

I thought about it and initially did it that way, but then some problems came up so I tried to keep it as simple as possible for the user and for our use case (having an fd associated with memory and sharing it with other processes).

The problems I had were:

- what mode_t to use if the object does not exist and needs to be created?

- exclude O_EXCL if the user passes the name since they may have already created it?

- call shm_unlink() only at object deallocation?

So I thought that for now we only support the "anonymous" mode, and if in the future we have a use case where the user wants to specify the name, we can add it later.

That said, if you think it's already useful from the beginning, I can add the name as an optional parameter.


I'm also not quite sure if "host_memory_backend_get_name()" should be used for the purpose here.

What problem do you see? As an alternative I thought of a static counter.

Thanks,
Stefano




reply via email to

[Prev in Thread] Current Thread [Next in Thread]