Is it possible to execute shell command in kernel module. I know that we can do it in user space C code using system
subroutine.
I am debugging a kernel module
You can use call_usermodehelper
function. See the example of how to use it at the LXR#1 or LXR#2.
UPD:
argv[0] = "/bin/bash";
argv[1] = "-c";
argv[2] = "/usr/bin/free";
argv[3] = NULL;
envp[0] = "HOME=/";
envp[1] = "TERM=linux";
envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin";
envp[3] = NULL;
call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
Its not possible to run a shell command from inside the kernel. You can instead read the /proc/meminfo file by calling the suitable procfs API to read the /proc/meminfo file. That virtual file has useful memory stats about the system memory.
You can't run a shell command in a kernel module. Code in a kernel module can cause a command to be run, but it will run in a normal user process.
free
will be of little help with kernel memory leaks.
It would be much better to wrap all allocations and frees in your kernel code, and maintain a counter of allocated memory.