<div dir="ltr"><div dir="ltr" class="gmail_msg">Hi,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I am trying to duplicate the purpose of /proc/pid/io for a homework to understand how procfs / seq_file works. Although there is no mandate to use seq_file but it seems very interesting to me.</div><div class="gmail_msg"><br></div><div class="gmail_msg">The aim is to print an output similar to /proc/pid/io but for all processes at once using a custom proc file name &quot;/proc/proc_io&quot;.</div><div class="gmail_msg"><br></div><div class="gmail_msg">The project is organized as follows:</div><div class="gmail_msg">main.c -&gt; It is responsible for kernel module init / deinit</div><div class="gmail_msg">sequence.c -&gt; This is where I have put in the processing logic</div><div class="gmail_msg">utils.h -&gt; bunch of macros for debugging</div><div class="gmail_msg"><br></div><div class="gmail_msg">The debugging logs come as follows:</div><div class="gmail_msg">=========</div><div class="gmail_msg"><div class="gmail_msg">[  +4.814129] &lt;pl_open:15&gt; </div><div class="gmail_msg">[  +0.000017] &lt;pl_seq_start:53&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_start:55&gt; init_task: [ffffffff81e11500] pos: [0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000004] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a28000]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a28dc0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a29b80]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a2b700]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a2d280]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a2e040]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a2ee00]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a78000]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225a7ee00]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aa8000]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aa8dc0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aaa940]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aab700]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aac4c0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aad280]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225aaee00]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225048000]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225048dc0]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff880225049b80]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff88022504b700]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff88022504c4c0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff88022504d280]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff88022504e040]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f0000]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f0dc0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f1b80]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f2940]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f44c0]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f5280]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f6040]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802250f6e00]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802251a0dc0]</div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:72&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_next:79&gt; n_tsk: [ffff8802251a1b80]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_stop:92&gt; </div><div class="gmail_msg">[  +0.000276] &lt;pl_seq_start:53&gt; </div><div class="gmail_msg">[  +0.000002] &lt;pl_seq_start:55&gt; init_task: [ffffffff81e11500] pos: [1]</div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_stop:92&gt; </div><div>=========<br></div><div><br></div><div>Towards the end, the sequence is as follows:</div><div><div class="gmail_msg">[  +0.000001] &lt;pl_seq_show:103&gt; </div><div class="gmail_msg">[  +0.000003] &lt;pl_seq_stop:92&gt; </div></div><div class="gmail_msg"><br></div><div class="gmail_msg">i.e. stop() is called after show().</div><div class="gmail_msg">This is making my output truncated to only first few processes.<br></div><div class="gmail_msg"><br></div><div class="gmail_msg">Although I always return 0 from show(), I fail to understand why stop() is being invoked just after show().</div><div class="gmail_msg"><br></div><div class="gmail_msg">Can you please help me or redirect me somewhere to understand why this is happening?</div><div class="gmail_msg"><br></div><div class="gmail_msg">Thank You.</div><div class="gmail_msg">Gaurav</div></div></div></div>