Hi Shashi, I think it is sufficient to add your intercept code in ops_mem.h. I am not sure about the writes from the I/O though.
Regards, Atif On 5/17/07, Shashidhar Mysore <[EMAIL PROTECTED]> wrote:
Hi Atif, Thanks for the quick reply. Yes, you are right, I want to consider all updates to memory. Can you tell me if it is sufficient enough to instrument just those in ops_mem.h? I want to make sure I am not missing any form of write to the memory (even it is from IO devices, which I think is taken care of). Thanks, -Shashi. On 5/17/07, Atif Hashmi <[EMAIL PROTECTED]> wrote: > > Hi, > > Answering "1. Am I instrumenting all stores if I instrument the OPROTOs > in ops_mem.h? " > > Do you consider all updates to memory as stores? e.g. add %ebx, (%eax), > will also write to the memory and > void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void) or one of its > variant will be called. > > If you are interested in all the memory updates, then your approach is > correct. If you are only interested in store instructions then your approach > is not correct. > > Atif > > On 5/17/07, Shashidhar Mysore <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > I want to instrument all store instructions, and for this I wrote a > > helper function (in helper.c) which prints out some information every > > time a store is executed. I call this helper function from within every > > store OPROTO in ops_mem.h > > > > for example: > > void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void) > > { > > glue(stl, MEMSUFFIX)(A0, T0); > > helper_print_info(A0); // MY HELPER FUNCTION > > FORCE_RET(); > > } > > > > > > This works just fine for me for some time, but after a while when the > > frequency of calls to helper_print_info increases, QEMU just hangs throwing > > out some information on the QEMU console. I have typed in the error message > > in parts below - (If you need more information, please let me know - I > > included a subset just because I do not yet know how to copy-paste text > > from QEMU console to the host machine console) > > > > ******************************************* > > BUG: soft lockup detected on CPU#0! > > > > Pid: 0, comm: swapper > > EIP: 0060:[<c027adfb>] CPU: 0 > > EIP is at serio_interrupt+0x7f/0x18f > > EFLAGS: 00000286 > > ... > > [c02c1b2d>] cdrom_pc_intr+0x90/0x21a > > ... > > [<c0105b1d>] do_IRQ+0x4a/0x82 > > ======================= > > ... > > [<c04242fe>] unknown_bootoption+0x0/0x1cd > > **************************************** > > > > QEMU hangs after throwing out the above error. However, if I switch to > > the Monitor and disable my helper function, QEMU resumes back and works > > fine. > > Can somebody tell me - > > 1. Am I instrumenting all stores if I instrument the OPROTOs in > > ops_mem.h? > > 2. From my above example, am I instrumenting the stores with my helper > > function in the right way? > > 3. Can you please tell me why "BUG: soft lockup detected..." error > > shows up freezing QEMU? > > > > Looking forward to your help. > > Thanks in advance. > > -Shashi. > > > >