Mathieu Desnoyers [Thu, 14 Jul 2011 17:46:21 +0000 (13:46 -0400)]
Check for context name duplicata
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Julien Desfossez [Wed, 29 Jun 2011 21:13:49 +0000 (17:13 -0400)]
Update ABI to select the output method
Add output selection in lttng_kernel_channel to use mmap or splice.
[ Merged, with a slight change: specified the enum values. ]
Signed-off-by: Julien Desfossez <julien.desfossez@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Julien Desfossez [Wed, 29 Jun 2011 21:12:16 +0000 (17:12 -0400)]
Add mmap client mode
Three new modules to configure the ring buffer output for mmap support.
Add the RING_BUFFER_OUTPUT_TEMPLATE macro to configure the ring buffer
output instead of being splice by default.
Signed-off-by: Julien Desfossez <julien.desfossez@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 29 Jun 2011 20:07:36 +0000 (16:07 -0400)]
Fix the ABI numbers for exported enums
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 27 Jun 2011 18:22:34 +0000 (14:22 -0400)]
lib prio heap: add missing gfpmask
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 27 Jun 2011 16:38:42 +0000 (12:38 -0400)]
Remove debugging init/exit printk
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 27 Jun 2011 15:58:50 +0000 (11:58 -0400)]
Cleanup extra character
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 04:45:07 +0000 (00:45 -0400)]
check for IS_ERR for perf return value
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 03:28:52 +0000 (23:28 -0400)]
Add check for perf counter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 03:04:34 +0000 (23:04 -0400)]
Add PIPE_DEF_BUFFERS to splice wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 03:03:30 +0000 (23:03 -0400)]
update spinlock wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:50:56 +0000 (22:50 -0400)]
Remove unused variable
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:50:25 +0000 (22:50 -0400)]
Update spinlock wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:47:25 +0000 (22:47 -0400)]
Add raw spinlock wrapper for kernels < 2.6.33
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:36:45 +0000 (22:36 -0400)]
Allow building on kernels < 2.6.33 (without perf event support)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:16:35 +0000 (22:16 -0400)]
Fix uninitialized return variable in error path for contexts
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:13:37 +0000 (22:13 -0400)]
Add check for old tracepoint kernel
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:07:01 +0000 (22:07 -0400)]
update uuid wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 02:05:44 +0000 (22:05 -0400)]
update uuid wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 01:29:54 +0000 (21:29 -0400)]
Fix typo in uuid wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 24 Jun 2011 01:28:47 +0000 (21:28 -0400)]
Add uuid wrapper for kernels < 2.6.35
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 23 Jun 2011 21:06:11 +0000 (17:06 -0400)]
Add wait quiescent
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 23 Jun 2011 20:57:39 +0000 (16:57 -0400)]
Add wait quiescent ioctl
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 23 Jun 2011 19:40:58 +0000 (15:40 -0400)]
Add ring buffer flush ioctl
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 23 Jun 2011 15:31:12 +0000 (11:31 -0400)]
Add pid/ppid/tid/vtid/vpid/vppid contexts
Use the values returned by gettid(), getpid() and getppid() for vtid,
vpid, vppid.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 22 Jun 2011 19:56:47 +0000 (15:56 -0400)]
Don't allow enable/disable on metadata channel/events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 22 Jun 2011 19:51:06 +0000 (15:51 -0400)]
Add enable/disable per event/channel/session (new ABI)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 11 Jun 2011 17:48:40 +0000 (13:48 -0400)]
Revert poll exclusive
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 11 Jun 2011 17:43:45 +0000 (13:43 -0400)]
Revert "Update pollwait explusive"
This reverts commit
67a00fae87ee17fd0a59c28b732347ee503fb07e.
Mathieu Desnoyers [Sat, 11 Jun 2011 17:39:30 +0000 (13:39 -0400)]
Update pollwait explusive
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 11 Jun 2011 17:19:13 +0000 (13:19 -0400)]
Merge branch 'master' of ssh://git.lttng.org/home/git/lttng-modules
Mathieu Desnoyers [Fri, 10 Jun 2011 15:20:26 +0000 (11:20 -0400)]
Add TODO for ftrace
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jun 2011 20:45:38 +0000 (16:45 -0400)]
Move splice wrapper into c file
Don't require a kallsyms lookup each time the wrapper is called.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jun 2011 20:29:22 +0000 (16:29 -0400)]
Return POLLERR if channel is disabled (error state)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jun 2011 20:00:14 +0000 (16:00 -0400)]
Add CPU hotplug notifier for ltt debugfs ABI, add pollwait exclusive wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jun 2011 18:38:33 +0000 (14:38 -0400)]
Handle perf counter's inability to setup counters before cpu is brought online
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jun 2011 17:56:33 +0000 (13:56 -0400)]
Add cpu hotplug support for perf counters
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jun 2011 21:39:46 +0000 (17:39 -0400)]
Add bug detection support for alignment header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jun 2011 21:33:14 +0000 (17:33 -0400)]
Add field alignment support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jun 2011 20:10:49 +0000 (16:10 -0400)]
Metadata: should write reserve_len bytes, not "len"
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 5 Jun 2011 04:18:01 +0000 (00:18 -0400)]
Perf support: fix warnings
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 20:18:44 +0000 (16:18 -0400)]
Fix perf counter test bug
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 19:59:12 +0000 (15:59 -0400)]
Update perf counter ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 19:24:27 +0000 (15:24 -0400)]
Update licensing
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 Jun 2011 17:35:31 +0000 (13:35 -0400)]
Fix large event header event id
Was incorrectly writing 32-bit when reserving only 16.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 19:41:53 +0000 (15:41 -0400)]
Remove deprecated (old) lttng files
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Jun 2011 19:40:17 +0000 (15:40 -0400)]
Update licensing info
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 22:59:45 +0000 (18:59 -0400)]
Fix syscall tracing argument input
The probe code was jumping over the argument read.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 22:47:59 +0000 (18:47 -0400)]
Never re-read length for dynamic arrays
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 21:29:34 +0000 (17:29 -0400)]
Coding style cleanup fix
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 20:15:45 +0000 (16:15 -0400)]
Split vsnprintf with large number of args in two
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 20:09:45 +0000 (16:09 -0400)]
Case alignment to uint for metadata print
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 20:03:14 +0000 (16:03 -0400)]
Add missing () to metadata for sequence
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 19:01:18 +0000 (15:01 -0400)]
Prio context: fix symbol lookup
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 18:22:50 +0000 (14:22 -0400)]
Add task_prio symbol wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 18:01:10 +0000 (14:01 -0400)]
Add prio and nice contexts
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 17:55:27 +0000 (13:55 -0400)]
Add process priority (as shown in /proc) to context
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 1 Jun 2011 17:20:43 +0000 (13:20 -0400)]
Don't export lttng metadata event in event list
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 03:21:36 +0000 (23:21 -0400)]
Fix context append incorrect copy length
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 02:54:11 +0000 (22:54 -0400)]
Add comm context
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 01:43:23 +0000 (21:43 -0400)]
Fix field ctx allocation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 01:28:34 +0000 (21:28 -0400)]
Update kernel context ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 01:21:05 +0000 (21:21 -0400)]
Fix too large copy of sys enter event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 26 May 2011 00:33:50 +0000 (20:33 -0400)]
Don't print context metadata if empty
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 23:09:35 +0000 (19:09 -0400)]
Fix loop dependency
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 23:06:53 +0000 (19:06 -0400)]
Add context support with metadata description
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 22:15:38 +0000 (18:15 -0400)]
Write context fields into trace
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 21:33:56 +0000 (17:33 -0400)]
Add PID context
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 21:20:30 +0000 (17:20 -0400)]
Add context management infrastructure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 18:57:01 +0000 (14:57 -0400)]
Return error if subbuffer size is lower than a page
... gentler than a warning and a crash.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 18:52:29 +0000 (14:52 -0400)]
Use lttng_ prefixed namespace for lttng prio heap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 02:19:43 +0000 (22:19 -0400)]
Fix module get/put handling wrt data free (use after free)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 25 May 2011 02:18:57 +0000 (22:18 -0400)]
Tracepoint list ABI: fix initialization of anonymous file
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Alexandre Montplaisir [Tue, 24 May 2011 22:32:51 +0000 (18:32 -0400)]
Specify the complete paths to define_trace.h
The "make" command used by DKMS does not cd into every directory like
"make modules" seems to do. This patch allows compilation for both
methods.
Signed-off-by: Alexandre Montplaisir <alexandre.montplaisir@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 17:22:35 +0000 (13:22 -0400)]
Add missing mutex to event list
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 17:09:18 +0000 (13:09 -0400)]
tp list: seq release should be used instead of seq release private
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 16:20:48 +0000 (12:20 -0400)]
Add tracepoint listing ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 15:37:06 +0000 (11:37 -0400)]
Handle refcount of modules having dynamically alloc event description
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 15:36:52 +0000 (11:36 -0400)]
Change event creation errval to EINVAL
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 15:02:37 +0000 (11:02 -0400)]
Update lttng ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 14:17:08 +0000 (10:17 -0400)]
Fix ftrace integration
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 13:02:07 +0000 (09:02 -0400)]
Always use module-local ring buffer
We are doing modifications currently, so don't take chances using an
externally packaged ring buffer.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 03:50:38 +0000 (23:50 -0400)]
Fix ftrace.h wrapper
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 03:48:10 +0000 (23:48 -0400)]
lttng-ftrace module can be unloaded safely
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 03:02:47 +0000 (23:02 -0400)]
Update ftrace symbol lookup
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 02:36:23 +0000 (22:36 -0400)]
Update ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 02:35:05 +0000 (22:35 -0400)]
Update ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 02:25:25 +0000 (22:25 -0400)]
Add function tracer ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 24 May 2011 01:04:42 +0000 (21:04 -0400)]
Add heap debug option, fix heap.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 21:49:12 +0000 (17:49 -0400)]
No need to rebalance heap for insertion
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 21:37:51 +0000 (17:37 -0400)]
Fix prio heap insertion and reallocation handling
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 20:08:42 +0000 (16:08 -0400)]
Add unused attribute to prio heap parent
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 20:07:18 +0000 (16:07 -0400)]
prio heap default alloc min value fix
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 19:56:32 +0000 (15:56 -0400)]
Make prio heap dynamically sized
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 16:13:26 +0000 (12:13 -0400)]
Remove GPL heapify implementation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 16:13:08 +0000 (12:13 -0400)]
prio heap API change (size of element)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 16:03:41 +0000 (12:03 -0400)]
Implement missing prio heap functions (MIT-licensed)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 15:28:58 +0000 (11:28 -0400)]
Remove GPL code from prio_heap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 23 May 2011 14:58:06 +0000 (10:58 -0400)]
Fix extended header bug
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 22 May 2011 15:56:51 +0000 (11:56 -0400)]
Update ring buffer and pretty print
Now enforce using module-local lib ring buffer (there are changes that
require it).
Pretty print array and dynamic array containing text.
Handle large event count.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
This page took 0.040997 seconds and 4 git commands to generate.