On 16 May 2010 20:17, vikas chauhan <presentisg...@gmail.com> wrote:
> Actually, I was a bit confused about reference counts, since some older > modules ( like the OSSv4 drivers ) use their own copy of reference counts, > and the above functions, it seems like , is being used by kernel to maintain > its own reference count table. Please pardon me, if I am saying something > stupid, as I am very very new to Linux kernel world. > > Vikas > > > On 16 May 2010 13:40, Simon Kitching <simon.kitch...@xnet.co.nz> wrote: > >> On Sun, 2010-05-16 at 03:06 +0545, vikas chauhan wrote: >> > Hi, >> > Can any one tell me, what are the >> > functions try_module_get and module_put used for ? I couldn't find any >> > documentation by googling. >> > >> >> The implementation of try_module_get can be found in file >> include/linux/module.h >> (it is an inline function). >> >> The implementation of module_put can be found in >> kernel/module.c >> >> Dynamically-inserted kernel modules are reference-counted, so that a >> call to "rmmod" will fail if the reference-count is not zero, ie if the >> module is still in use. >> >> Function module_get increments the reference count of a module; once >> this has returned success then the calling code can rely on the >> specified module *not* being unloaded. When the caller no longer needs >> that module, then module_put must be called to decrement the reference >> count. >> >> Well, the reference-counting scheme is slightly more complicated than >> just a single integer (it keeps per-cpu "incs" and "decs" counts). But >> the effect is the same. >> >> Regards, >> Simon >> >> >