On Tue, 2006-03-21 at 18:13 +1200, Sam Vilain wrote:
> +static inline void release_vx_info(struct vx_info *vxi,
> + struct task_struct *task)
> +{
> + might_sleep();
> +
> + if (atomic_dec_and_test(&vxi->vx_tasks))
> + unhash_vx_info(vxi);
> +}
Are these better handled by krefs and their destructors?
-- Dave
Dave Hansen wrote:
>On Tue, 2006-03-21 at 18:13 +1200, Sam Vilain wrote:
>
>
>>+static inline void release_vx_info(struct vx_info *vxi,
>>+ struct task_struct *task)
>>+{
>>+ might_sleep();
>>+
>>+ if (atomic_dec_and_test(&vxi->vx_tasks))
>>+ unhash_vx_info(vxi);
>>+}
>>
>>
>
>Are these better handled by krefs and their destructors?
>
>
It does seem a little clumsy, doesn't it. I've found
Documentation/kref.txt and will rewrite those functions to use this API.
Sam.
On Tue, Mar 21, 2006 at 10:53:05AM -0800, Dave Hansen wrote:
> On Tue, 2006-03-21 at 18:13 +1200, Sam Vilain wrote:
> > +static inline void release_vx_info(struct vx_info *vxi,
> > + struct task_struct *task)
> > +{
> > + might_sleep();
> > +
> > + if (atomic_dec_and_test(&vxi->vx_tasks))
> > + unhash_vx_info(vxi);
> > +}
>
> Are these better handled by krefs and their destructors?
well, those were there long before krefs got
into the kernel, IIRC :)
best,
Herbert
> -- Dave