Hello Roger, Sorry for the late answer.
Roger Pau Monné <[email protected]> writes: > On Tue, Mar 14, 2023 at 08:56:29PM +0000, Volodymyr Babchuk wrote: >> We can use reference counter to ease up object lifetime management. >> This patch adds very basic support for reference counters. refcnt >> should be used in the following way: >> >> 1. Protected structure should have refcnt_t field >> >> 2. This field should be initialized with refcnt_init() during object >> construction. >> >> 3. If code holds a valid pointer to a structure/object it can increase >> refcount with refcnt_get(). No additional locking is required. >> >> 4. Code should call refcnt_put() before dropping pointer to a >> protected structure. `destructor` is a call back function that should >> destruct object and free all resources, including structure protected >> itself. Destructor will be called if reference counter reaches zero. >> >> 5. If code does not hold a valid pointer to a protected structure it >> should use other locking mechanism to obtain a pointer. For example, >> it should lock a list that hold protected objects. > > Sorry, I didn't look at the previous versions, but did we consider > importing refcount_t and related logic from Linux? Well, I considered this. But it is more complex. It has separate refcount module, which just counts references + kref code, that is capable of calling destructors. I am not sure if Xen need this division. In any case, I tried to replicate Linux behavior as close as possible. On other hand, Jan suggests to rework API, so it will be differ from Linux one... -- WBR, Volodymyr
