Hi Galanom,
Thanks a lot for such a detailed reply.
This is what am trying to do exactly:
I am interested in doing the batch processing of system calls. My application has around 100 user level threads and around 64 kernel level threads. Whenever a user level thread requests a system call, instead of performing a system call I take a note of that system call and then I make that user thread sleep. Only when there are a considerable number of system calls waiting for me, i do a context switch and then let the kernel threads execute all those system calls. That ways, I am able to batch perform system calls and reduce the number of context switches. My application is working perfectly and I can see an improvement in performance.
However, now I actually want to trace through the application to see, whether it is doing exactly what I am expecting it to do. ie, when the user threads are executing only the user threads are executing and there is no switching to kernel threads and vice-versa. I also want to check when the system calls are being executed.
In reference to the problem that i posted, if I can trace through that dummy application then I can also trace through my real application.
I hope this helps and now you are in a better situation to provide more insightful information.
Thanks
---------- Post updated at 01:49 PM ---------- Previous update was at 01:36 PM ----------
Just to add.. Yes am working on VM, so crashing is not an issue