This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: page faults counter example is broken?!


On Sat, Sep 21, 2013 at 9:58 PM, Paddie O'Brien <paddieobrien@gmail.com> wrote:
> I think the way minor faults are recorded is the problem. The code below
> is used to determine the type of fault (from memory.stp). Perhaps the
> check should be:
>
> #if defined(VM_FAULT_MINOR) && VM_FAULT_MINOR == 0
>
> function vm_fault_contains:long (value:long, test:long)
> %{
>     int res;
>     switch (STAP_ARG_test){
>     case 0: res = STAP_ARG_value & VM_FAULT_OOM; break;
>     case 1: res = STAP_ARG_value & VM_FAULT_SIGBUS; break;
> #if defined(VM_FAULT_MINOR) && VM_FAULT_MINOR != 0
>     case 2: /* VM_FAULT_MINOR infered by that flags off */
>         res = !((VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_MAJOR) &
>                  STAP_ARG_value);
>         break;
> #else
>     case 2: res = STAP_ARG_value == VM_FAULT_MINOR; break;

After changing the != into an == operator the number of reported
faults indeed matches with the counters maintained by the OS.

Did this catch the attention of some systemtap developer or shall I
file a separate bug report?

Thanks,
Thomas.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]