Hi, all.
I'm writing a kernel module. One of its tasks
requires getting full paths of all open files in the system.
My first solution essentially looks
like:
for_each_process_thread(process, thread) iterate_fd(files, 0, my_callback, NULL); my_callback calls d_path for passed file->f_path to get its full path. But this solution has obvious
problems:
A. It will skip files which were opened directly from kernel code (using filp_open for example); B. It iterates over fd_table for each thread, performing a lot of unnecessary work (invoking my_callback multiple times for one file). My questions are:
1) Is there any bettter way to get full paths of all open files? 2) If there is no better way, what kind of locking should i use a) to protect access to task list when invoking for_each_process_thread? b) to protect access to thread's fd_table when invoking iterate_fd? |
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies