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

Reply via email to