update lttv page fault handling
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 27 Jan 2009 20:54:19 +0000 (20:54 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 27 Jan 2009 20:54:19 +0000 (20:54 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@3296 04897980-b3bd-0310-b5e0-8ef037075253

trunk/lttv/configure.in
trunk/lttv/doc/developer/lttng-lttv-compatibility.html
trunk/lttv/lttv/lttv/state.c
trunk/lttv/lttv/lttv/state.h
trunk/lttv/lttv/modules/gui/controlflow/drawing.c
trunk/lttv/lttv/modules/gui/resourceview/drawing.c
trunk/lttv/lttv/modules/gui/resourceview/eventhooks.c

index a25ef55a377c20c75e67cb63ee4136397fccd083..eb251dda06e5a5a84d98546aa46c6702f9a6f43d 100644 (file)
@@ -23,7 +23,7 @@
 AC_PREREQ(2.57)
 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
 #AC_WITH_LTDL  # not needed ?
-AM_INIT_AUTOMAKE(lttv,0.12.7-20012009)
+AM_INIT_AUTOMAKE(lttv,0.12.8-27012009)
 AM_CONFIG_HEADER(config.h)
 AM_PROG_LIBTOOL
 
index bea4afc80f8a11ab371398af9fd2d337313af6fb..ef48bec30ac99aa69b318ef590ad5ffd8b9705e7 100644 (file)
@@ -3311,6 +3311,52 @@ powerpc64, s390, sparc, sparc64.<br>
 </tr>
 
 
+<tr>
+<td style="vertical-align: top;">
+0.12.8<br>
+</td>
+<td style="vertical-align: top;">
+0.87<br>
+</td>
+<td style="vertical-align: top;">
+0.60<br>
+0.61<br>
+0.62<br>
+0.63<br>
+0.64<br>
+</td>
+<td style="vertical-align: top;">
+obsolete<br>
+</td>
+<td style="vertical-align: top;">
+0.6<br>
+</td>
+<td style="vertical-align: top;">
+obsolete<br>
+</td>
+<td style="vertical-align: top;">
+2.3<br>
+</td>
+<td style="vertical-align: top;">
+2.6.28.2<br>
+</td>
+<td style="vertical-align: top;">
+LTTng 0.87 combines 4 page fault events into 2. This is a very high-speed
+tracing path.<br>
+LTTV 0.12.8 supports LTTng 0.87.<br>
+</td>
+<td style="vertical-align: top;">
+</td>
+<td style="vertical-align: top;">
+x86, alpha, arm26, avr32, cris, frv, h8300, m32r, m68knommu, parisc, sh, sh64,
+um, v850, xtensa.<br>
+arm, i686, ia64, m68k, mips, mipsel, x86_64, powerpc 405,
+powerpc64, s390, sparc, sparc64.<br>
+</td>
+</tr>
+
+
+
 
 </tbody>
 </table>
index e6278ac8070bccba3d3a504326fda047c8ec0978..8f97550759efd9fa24bfb61dfee99a7c91fd034f 100644 (file)
@@ -70,6 +70,10 @@ GQuark
 GQuark 
     LTT_EVENT_SYSCALL_ENTRY,
     LTT_EVENT_SYSCALL_EXIT,
+    LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
+    LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
+    LTT_EVENT_PAGE_FAULT_ENTRY,
+    LTT_EVENT_PAGE_FAULT_EXIT,
     LTT_EVENT_TRAP_ENTRY,
     LTT_EVENT_TRAP_EXIT,
     LTT_EVENT_IRQ_ENTRY,
@@ -3421,6 +3425,30 @@ void lttv_state_add_event_hooks(LttvTracesetState *self)
         NULL,
         trap_exit, NULL, &hooks);
 
+    lttv_trace_find_hook(ts->parent.t,
+        LTT_CHANNEL_KERNEL,
+        LTT_EVENT_PAGE_FAULT_ENTRY,
+        FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+        trap_entry, NULL, &hooks);
+
+    lttv_trace_find_hook(ts->parent.t,
+        LTT_CHANNEL_KERNEL,
+        LTT_EVENT_PAGE_FAULT_EXIT,
+        NULL,
+        trap_exit, NULL, &hooks);
+
+    lttv_trace_find_hook(ts->parent.t,
+        LTT_CHANNEL_KERNEL,
+        LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
+        FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+        trap_entry, NULL, &hooks);
+
+    lttv_trace_find_hook(ts->parent.t,
+        LTT_CHANNEL_KERNEL,
+        LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
+        NULL,
+        trap_exit, NULL, &hooks);
+
     lttv_trace_find_hook(ts->parent.t,
         LTT_CHANNEL_KERNEL,
         LTT_EVENT_IRQ_ENTRY,
@@ -4230,6 +4258,10 @@ static void module_init()
   LTT_EVENT_SYSCALL_EXIT  = g_quark_from_string("syscall_exit");
   LTT_EVENT_TRAP_ENTRY    = g_quark_from_string("trap_entry");
   LTT_EVENT_TRAP_EXIT     = g_quark_from_string("trap_exit");
+  LTT_EVENT_PAGE_FAULT_ENTRY    = g_quark_from_string("page_fault_entry");
+  LTT_EVENT_PAGE_FAULT_EXIT     = g_quark_from_string("page_fault_exit");
+  LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY = g_quark_from_string("page_fault_nosem_entry");
+  LTT_EVENT_PAGE_FAULT_NOSEM_EXIT = g_quark_from_string("page_fault_nosem_exit");
   LTT_EVENT_IRQ_ENTRY     = g_quark_from_string("irq_entry");
   LTT_EVENT_IRQ_EXIT      = g_quark_from_string("irq_exit");
   LTT_EVENT_SOFT_IRQ_RAISE     = g_quark_from_string("softirq_raise");
index b24badbb52966406f5ed92278ebf755bbd267966..8c5fc04006dd610bdfb82857d36dc2a328f06b2b 100644 (file)
@@ -79,6 +79,10 @@ extern GQuark
     LTT_EVENT_SYSCALL_EXIT,
     LTT_EVENT_TRAP_ENTRY,
     LTT_EVENT_TRAP_EXIT,
+    LTT_EVENT_PAGE_FAULT_ENTRY,
+    LTT_EVENT_PAGE_FAULT_EXIT,
+    LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
+    LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
     LTT_EVENT_IRQ_ENTRY,
     LTT_EVENT_IRQ_EXIT,
     LTT_EVENT_SOFT_IRQ_RAISE,
index 46c83b6e611f4bdc074d9750f8e407c41376e267..3d74b502043d2797e3b5f3c6bb8d4d85495bd080 100644 (file)
@@ -253,6 +253,38 @@ void drawing_data_request(Drawing_t *drawing,
           events_request,
           &hooks);
 
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_ENTRY,
+          FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_EXIT,
+          NULL, 
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
+          FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
+          NULL, 
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
       lttv_trace_find_hook(ts->parent.t,
           LTT_CHANNEL_KERNEL,
           LTT_EVENT_IRQ_ENTRY,
index 2d3b4a1b4521ef389ae6260418f9044929fbf52b..033475adaffdcf0f7e2a15674dab76e561e1d4e4 100644 (file)
@@ -279,6 +279,38 @@ void drawing_data_request(Drawing_t *drawing,
           events_request,
           &hooks);
 
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_ENTRY,
+          FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_EXIT,
+          NULL,
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
+          FIELD_ARRAY(LTT_FIELD_TRAP_ID),
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
+      lttv_trace_find_hook(ts->parent.t,
+          LTT_CHANNEL_KERNEL,
+          LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
+          NULL,
+          before_execmode_hook,
+          events_request,
+          &hooks);
+
       lttv_trace_find_hook(ts->parent.t,
           LTT_CHANNEL_KERNEL,
           LTT_EVENT_IRQ_ENTRY,
index d0c87f6a485b601c65a0c8ae130962b7a2242969..563fc613249f32b7817cfa319c9f52cbda4a22fb 100644 (file)
@@ -1186,15 +1186,20 @@ int before_execmode_hook_trap(void *hook_data, void *call_data)
 
   /*
    * Check for LTT_CHANNEL_KERNEL channel name and event ID
-   * corresponding to LTT_EVENT_TRAP_ENTRY or LTT_EVENT_TRAP_EXIT.
+   * corresponding to LTT_EVENT_TRAP/PAGE_FAULT_ENTRY or
+   * LTT_EVENT_TRAP/PAGE_FAULT_EXIT.
    */
   if (tfc->tf->name != LTT_CHANNEL_KERNEL)
     return 0;
   minfo = marker_get_info_from_id(tfc->tf->mdata, e->event_id);
   g_assert(minfo != NULL);
-  if (minfo->name == LTT_EVENT_TRAP_ENTRY) {
+  if (minfo->name == LTT_EVENT_TRAP_ENTRY
+      || minfo->name == LTT_EVENT_PAGE_FAULT_ENTRY
+      || minfo->name == LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY) {
     trap = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 0));
-  } else if (minfo->name == LTT_EVENT_TRAP_EXIT) {
+  } else if (minfo->name == LTT_EVENT_TRAP_EXIT
+             || minfo->name == LTT_EVENT_PAGE_FAULT_EXIT
+             || minfo->name == LTT_EVENT_PAGE_FAULT_NOSEM_EXIT) {
     trap = ts->cpu_states[cpu].last_trap;
   } else
     return 0;
This page took 0.030358 seconds and 4 git commands to generate.