# HG changeset patch # User rob.gardner@hp.com # Node ID 81e7d6e0f9109bf493b7c8281ffc79d10f4dd2ab # Parent 67f658b84025efeb2a570d2937ebc8f5e35056f7 New trace event is introduced to track lost trace records. diff -r 67f658b84025 -r 81e7d6e0f910 xen/common/trace.c --- a/xen/common/trace.c Thu Jul 6 18:08:37 2006 +++ b/xen/common/trace.c Thu Jul 6 23:29:26 2006 @@ -234,7 +234,8 @@ struct t_buf *buf; struct t_rec *rec; unsigned long flags; - + static long lost_records = 0; + BUG_ON(!tb_init_done); if ( (tb_event_mask & event) == 0 ) @@ -261,8 +262,24 @@ if ( (buf->prod - buf->cons) >= nr_recs ) { + lost_records++; local_irq_restore(flags); return; + } + + if (lost_records) { + rec = &t_recs[smp_processor_id()][buf->prod % nr_recs]; + rec->cycles = (u64)get_cycles(); + rec->event = TRC_LOST_RECORDS; + rec->data[0] = lost_records; + rec->data[1] = 0; + rec->data[2] = 0; + rec->data[3] = 0; + rec->data[4] = 0; + + wmb(); + buf->prod++; + lost_records = 0; } rec = &t_recs[smp_processor_id()][buf->prod % nr_recs]; diff -r 67f658b84025 -r 81e7d6e0f910 xen/include/public/trace.h --- a/xen/include/public/trace.h Thu Jul 6 18:08:37 2006 +++ b/xen/include/public/trace.h Thu Jul 6 23:29:26 2006 @@ -26,6 +26,7 @@ #define TRC_VMXIO 0x00088000 /* VMX io emulation trace */ /* Trace events per class */ +#define TRC_LOST_RECORDS (TRC_GEN + 1) #define TRC_SCHED_DOM_ADD (TRC_SCHED + 1) #define TRC_SCHED_DOM_REM (TRC_SCHED + 2)