[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Question about xentrace to trace s_time_t type of data


I'm trying to trace the scheduler-specific events for debug purpose by using xentrace (instead of using printk). I read the trace code in credit and credit2 scheduler (sched_credit.c and sched_credit2.c) and "followed" the way credit2 wrote.Â

I added the following code into the burn_budget() in my scheduler file, sched_rt.c:Â

   ÂÂ/* TRACE */


      struct {

        unsigned dom:16,vcpu:16;

        s_time_t cur_budget;

      } d;

      d.dom = svc->vcpu->domain->domain_id;

      d.vcpu = svc->vcpu->vcpu_id;

      d.cur_budget = svc->cur_budget;

      trace_var(TRC_RT_BUDGET_REPLENISH, 1,


           (unsigned char *) &d);


âThe result I got from "xenanalyze --dump-all"â for this event is (I only show one entry):

]Â 0.285656366 x-|- d0v1 Â 22804(2:2:804) 4 [ 00010000 ffff82d0 003d0900 00000000 ]

âWhat I'm confused is the meaning of "[ 00010000 ffff82d0 003d0900 00000000 ]":

I can understand that 00010000 represents dom 0's vcpu 1. But I don't know how to interpret the rest of numbers "ffff82d0 003d0900 00000000".

The cur_budget traced should always be 4000000. So the expected result should be the hex value of 4000000.Â

My question is:
1) How should I interpret the  Â"ffff82d0 003d0900 00000000Â" to be "4000000"?Â
2) Why does it has three more 32bits in "[ 00010000 ffff82d0 003d0900 00000000 ]" instead of just two? (since s_time_t is a signed 64 bit type)

It seems that xentrace just dump this struct d to a file and xenalyze just print it out one by one (and each item is 32bit). In my opinion, the output in [ ... ]â should have only three 32bit-size fields instead of 4. I'm not sure where it goes wrong.Â

I also tried to change the struct d to



       ÂÂunsigned cur_budget_lo;

       ÂÂunsigned cur_budget_hi;

     ÂÂ} d;

âand it give me expected output, which has only three 32bit-size fields in [ ... ] in Âxenalyze's outputâ.

So I'm guessing I should not use a field larger than 32bit in the trace struct d. But I'm not sure about the reason. Could any one give me some insight?Â

Thank you very much for your time and help in this question!



Meng Xu
PhD Student in Computer and Information Science
University of Pennsylvania
Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.