Improve the descriptions about reference count (#62)

The term "reference count" would be better than "use count."
In addition, the usage of module_refcount(THIS_MODULE) was appended
for the reference counter query.
This commit is contained in:
fennecJ 2021-08-17 00:23:22 +08:00 committed by GitHub
parent 53d071eb16
commit 467cc83cc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -894,14 +894,15 @@ The results of this would be impossible to predict, but they can not be very pos
Normally, when you do not want to allow something, you return an error code (a negative number) from the function which is supposed to do it. Normally, when you do not want to allow something, you return an error code (a negative number) from the function which is supposed to do it.
With \cpp|cleanup_module| that's impossible because it is a void function. With \cpp|cleanup_module| that's impossible because it is a void function.
However, there is a counter which keeps track of how many processes are using your module. However, there is a counter which keeps track of how many processes are using your module.
You can see what its value is by looking at the 3rd field of \verb|/proc/modules|. You can see what its value is by looking at the 3rd field with the command \sh|cat /proc/modules| or \sh|sudo lsmod|.
If this number isn't zero, \sh|rmmod| will fail. If this number isn't zero, \sh|rmmod| will fail.
Note that you do not have to check the counter within \cpp|cleanup_module| because the check will be performed for you by the system call \cpp|sys_delete_module|, defined in \src{include/linux/syscalls.h}. Note that you do not have to check the counter within \cpp|cleanup_module| because the check will be performed for you by the system call \cpp|sys_delete_module|, defined in \src{include/linux/syscalls.h}.
You should not use this counter directly, but there are functions defined in \src{include/linux/module.h} which let you increase, decrease and display this counter: You should not use this counter directly, but there are functions defined in \src{include/linux/module.h} which let you increase, decrease and display this counter:
\begin{itemize} \begin{itemize}
\item \cpp|try_module_get(THIS_MODULE)|: Increment the use count. \item \cpp|try_module_get(THIS_MODULE)|: Increment the reference count of current module.
\item \cpp|module_put(THIS_MODULE)|: Decrement the use count. \item \cpp|module_put(THIS_MODULE)|: Decrement the reference count of current module.
\item \cpp|module_refcount(THIS_MODULE)|: Return the value of reference count of current module.
\end{itemize} \end{itemize}
It is important to keep the counter accurate; if you ever do lose track of the correct usage count, you will never be able to unload the module; it's now reboot time, boys and girls. It is important to keep the counter accurate; if you ever do lose track of the correct usage count, you will never be able to unload the module; it's now reboot time, boys and girls.