Re: clarity on kref needed.

From: Greg KH
Date: Wed Jan 18 2006 - 10:49:53 EST


On Wed, Jan 18, 2006 at 12:27:45PM +0530, Mukund JB. wrote:
>
> Dear All,
>
> I have gone through kref and am planning to implement then in my usb driver.

What kind of usb driver?

> please terminate my misconceptions if any by correcting the statements below.
>
> In the call below:
> kref_init(&dev->kref);
> sets the refcount in the kref to 1.

Yes.

> kref_put(&dev->kref);
> increment the refcount.

Hm, don't you mean "kref_get()" here? If so, yes, that is correct.

> kref_put(&dev->kref, mem_release );
> What I understand is when the refcount falls back to '1', only then
> the mem_release() function will be called.

No, when it falls to 0 it will be called.

> Is it correct? I mean, when is the mem_release () called i.e. when the
> refcount is '0' or '1'.

0. There's an OLS paper from a few years ago that describes kref in
detail, as well as the in-kernel documentation of it (see the file
Documentation/kref.txt). Did you read that?

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/