On 11/16/21 00:05, Praveen K Paladugu wrote: > > > I started refactoring this commit to have shared methods between qemu > and ch drviers for cgroup management. While doing so, I realized, I > still need a mechanism to identify what the underlying driver is : ch/qemu. > > An example of it is the prefix for the cgroup to be created. Ch driver > is configured to have a prefix of "ch", while qemu driver configures the > prefix of the cgroup name to "qemu". > > What is the best way to detect the underlying driver from > src/hypervisor? One way I could think of it is to extend > virQEMUDriver/virtCHDriver struct to also have a driver name which will > be checked from these shared methods. Any other recommendations for this > check? Hey, sorry for replying this late, but I was on PTO. I don't think I understand why src/hypervisor/* would need to see the difference, but I'll be honest - maybe I did not think it through. My expectation was that qemu_cgroup.c APIs get virCGroup pointer (or obtain it from priv->cgroup) which already points to the correct, per guest CGroup (in other words, points to /sys/fs/cgroup/.../qemu/... or /sys/fs/cgroup/.../ch/...). Isn't that what you are seeing? If you still need to know which driver called function under src/hypervisor/ you can pass it as an argument to the function. For instance, if the function depends on the driver, then it could look like this: int func(const char *prefix, ...) { ... path = g_strdup_printf("/sys/fs/cgroup/%s/some/file", prefix): ... } and then QEMU driver would call the function as: func("qemu"); and CH driver would call it as: func("ch"); Michal