blob: f5b81843d1c4902aa4325bd9bac135a19a49e74a [file] [log] [blame]
Jon Medhurstaaf37a32013-06-11 12:10:56 +01001/**
Jon Medhurstb1d07442015-05-08 12:04:18 +01002 * Copyright (C) ARM Limited 2012-2015. All rights reserved.
Jon Medhurstaaf37a32013-06-11 12:10:56 +01003 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#define NEWLINE_CANARY \
11 /* Unix */ \
12 "1\n" \
13 /* Windows */ \
14 "2\r\n" \
15 /* Mac OS */ \
16 "3\r" \
17 /* RISC OS */ \
18 "4\n\r" \
19 /* Add another character so the length isn't 0x0a bytes */ \
20 "5"
21
Jon Medhurstd3698592013-10-10 16:48:56 +010022#ifdef MALI_SUPPORT
23#include "gator_events_mali_common.h"
24#endif
25
Jon Medhurst96b56152014-10-30 18:01:15 +000026static void marshal_summary(long long timestamp, long long uptime, long long monotonic_delta, const char *uname)
Jon Medhurstaaf37a32013-06-11 12:10:56 +010027{
28 unsigned long flags;
29 int cpu = 0;
30
31 local_irq_save(flags);
Jon Medhurst15ce78d2014-04-10 09:02:02 +010032 gator_buffer_write_packed_int(cpu, SUMMARY_BUF, MESSAGE_SUMMARY);
Jon Medhurstaaf37a32013-06-11 12:10:56 +010033 gator_buffer_write_string(cpu, SUMMARY_BUF, NEWLINE_CANARY);
34 gator_buffer_write_packed_int64(cpu, SUMMARY_BUF, timestamp);
35 gator_buffer_write_packed_int64(cpu, SUMMARY_BUF, uptime);
Jon Medhurstd3698592013-10-10 16:48:56 +010036 gator_buffer_write_packed_int64(cpu, SUMMARY_BUF, monotonic_delta);
Jon Medhurstaaf37a32013-06-11 12:10:56 +010037 gator_buffer_write_string(cpu, SUMMARY_BUF, "uname");
38 gator_buffer_write_string(cpu, SUMMARY_BUF, uname);
39#if GATOR_IKS_SUPPORT
40 gator_buffer_write_string(cpu, SUMMARY_BUF, "iks");
41 gator_buffer_write_string(cpu, SUMMARY_BUF, "");
42#endif
Jon Medhurst96b56152014-10-30 18:01:15 +000043#ifdef CONFIG_PREEMPT_RTB
44 gator_buffer_write_string(cpu, SUMMARY_BUF, "preempt_rtb");
45 gator_buffer_write_string(cpu, SUMMARY_BUF, "");
46#endif
47#ifdef CONFIG_PREEMPT_RT_FULL
48 gator_buffer_write_string(cpu, SUMMARY_BUF, "preempt_rt_full");
49 gator_buffer_write_string(cpu, SUMMARY_BUF, "");
50#endif
51 /* Let Streamline know which GPU is used so that it can label the GPU Activity appropriately. This is a temporary fix, to be improved in a future release. */
Jon Medhurstd3698592013-10-10 16:48:56 +010052#ifdef MALI_SUPPORT
53 gator_buffer_write_string(cpu, SUMMARY_BUF, "mali_type");
54#if (MALI_SUPPORT == MALI_4xx)
55 gator_buffer_write_string(cpu, SUMMARY_BUF, "4xx");
Jon Medhurst96b56152014-10-30 18:01:15 +000056#elif (MALI_SUPPORT == MALI_MIDGARD)
Jon Medhurstd3698592013-10-10 16:48:56 +010057 gator_buffer_write_string(cpu, SUMMARY_BUF, "6xx");
58#else
59 gator_buffer_write_string(cpu, SUMMARY_BUF, "unknown");
60#endif
61#endif
Jon Medhurstaaf37a32013-06-11 12:10:56 +010062 gator_buffer_write_string(cpu, SUMMARY_BUF, "");
Jon Medhurst96b56152014-10-30 18:01:15 +000063 /* Commit the buffer now so it can be one of the first frames read by Streamline */
Jon Medhurstaaf37a32013-06-11 12:10:56 +010064 local_irq_restore(flags);
Jon Medhurst15ce78d2014-04-10 09:02:02 +010065 gator_commit_buffer(cpu, SUMMARY_BUF, gator_get_time());
Jon Medhurstaaf37a32013-06-11 12:10:56 +010066}
67
68static bool marshal_cookie_header(const char *text)
69{
70 int cpu = get_physical_cpu();
Jon Medhurst96b56152014-10-30 18:01:15 +000071
Jon Medhurstaaf37a32013-06-11 12:10:56 +010072 return buffer_check_space(cpu, NAME_BUF, strlen(text) + 3 * MAXSIZE_PACK32);
73}
74
75static void marshal_cookie(int cookie, const char *text)
76{
77 int cpu = get_physical_cpu();
Jon Medhurst96b56152014-10-30 18:01:15 +000078 /* buffer_check_space already called by marshal_cookie_header */
Jon Medhurstaaf37a32013-06-11 12:10:56 +010079 gator_buffer_write_packed_int(cpu, NAME_BUF, MESSAGE_COOKIE);
80 gator_buffer_write_packed_int(cpu, NAME_BUF, cookie);
81 gator_buffer_write_string(cpu, NAME_BUF, text);
82 buffer_check(cpu, NAME_BUF, gator_get_time());
83}
84
85static void marshal_thread_name(int pid, char *name)
86{
87 unsigned long flags, cpu;
88 u64 time;
Jon Medhurst96b56152014-10-30 18:01:15 +000089
Jon Medhurstaaf37a32013-06-11 12:10:56 +010090 local_irq_save(flags);
91 cpu = get_physical_cpu();
92 time = gator_get_time();
93 if (buffer_check_space(cpu, NAME_BUF, TASK_COMM_LEN + 3 * MAXSIZE_PACK32 + MAXSIZE_PACK64)) {
94 gator_buffer_write_packed_int(cpu, NAME_BUF, MESSAGE_THREAD_NAME);
95 gator_buffer_write_packed_int64(cpu, NAME_BUF, time);
96 gator_buffer_write_packed_int(cpu, NAME_BUF, pid);
97 gator_buffer_write_string(cpu, NAME_BUF, name);
98 }
Jon Medhurstaaf37a32013-06-11 12:10:56 +010099 local_irq_restore(flags);
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100100 buffer_check(cpu, NAME_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100101}
102
Jon Medhurst34d97692013-12-19 09:23:06 +0000103static void marshal_link(int cookie, int tgid, int pid)
104{
105 unsigned long cpu = get_physical_cpu(), flags;
106 u64 time;
107
108 local_irq_save(flags);
109 time = gator_get_time();
Jon Medhurstb1d07442015-05-08 12:04:18 +0100110 if (buffer_check_space(cpu, ACTIVITY_BUF, MAXSIZE_PACK64 + 5 * MAXSIZE_PACK32)) {
111 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, MESSAGE_LINK);
112 gator_buffer_write_packed_int64(cpu, ACTIVITY_BUF, time);
113 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, cookie);
114 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, tgid);
115 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, pid);
Jon Medhurst34d97692013-12-19 09:23:06 +0000116 }
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100117 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000118 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstb1d07442015-05-08 12:04:18 +0100119 buffer_check(cpu, ACTIVITY_BUF, time);
Jon Medhurst34d97692013-12-19 09:23:06 +0000120}
121
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100122static bool marshal_backtrace_header(int exec_cookie, int tgid, int pid, u64 time)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100123{
124 int cpu = get_physical_cpu();
Jon Medhurst96b56152014-10-30 18:01:15 +0000125
Jon Medhurstd3698592013-10-10 16:48:56 +0100126 if (!buffer_check_space(cpu, BACKTRACE_BUF, MAXSIZE_PACK64 + 5 * MAXSIZE_PACK32 + gator_backtrace_depth * 2 * MAXSIZE_PACK32)) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000127 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstd3698592013-10-10 16:48:56 +0100128 buffer_check(cpu, BACKTRACE_BUF, time);
129
130 return false;
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100131 }
132
Jon Medhurstd3698592013-10-10 16:48:56 +0100133 gator_buffer_write_packed_int64(cpu, BACKTRACE_BUF, time);
134 gator_buffer_write_packed_int(cpu, BACKTRACE_BUF, exec_cookie);
135 gator_buffer_write_packed_int(cpu, BACKTRACE_BUF, tgid);
136 gator_buffer_write_packed_int(cpu, BACKTRACE_BUF, pid);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100137
Jon Medhurstd3698592013-10-10 16:48:56 +0100138 return true;
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100139}
140
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100141static void marshal_backtrace(unsigned long address, int cookie, int in_kernel)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100142{
143 int cpu = get_physical_cpu();
Jon Medhurst96b56152014-10-30 18:01:15 +0000144
145 if (cookie == 0 && !in_kernel)
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100146 cookie = UNRESOLVED_COOKIE;
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100147 gator_buffer_write_packed_int(cpu, BACKTRACE_BUF, cookie);
148 gator_buffer_write_packed_int64(cpu, BACKTRACE_BUF, address);
149}
150
Jon Medhurstd3698592013-10-10 16:48:56 +0100151static void marshal_backtrace_footer(u64 time)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100152{
153 int cpu = get_physical_cpu();
Jon Medhurst96b56152014-10-30 18:01:15 +0000154
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100155 gator_buffer_write_packed_int(cpu, BACKTRACE_BUF, MESSAGE_END_BACKTRACE);
156
Jon Medhurst96b56152014-10-30 18:01:15 +0000157 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstd3698592013-10-10 16:48:56 +0100158 buffer_check(cpu, BACKTRACE_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100159}
160
161static bool marshal_event_header(u64 time)
162{
163 unsigned long flags, cpu = get_physical_cpu();
164 bool retval = false;
165
166 local_irq_save(flags);
167 if (buffer_check_space(cpu, BLOCK_COUNTER_BUF, MAXSIZE_PACK32 + MAXSIZE_PACK64)) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000168 gator_buffer_write_packed_int(cpu, BLOCK_COUNTER_BUF, 0); /* key of zero indicates a timestamp */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100169 gator_buffer_write_packed_int64(cpu, BLOCK_COUNTER_BUF, time);
170 retval = true;
171 }
172 local_irq_restore(flags);
173
174 return retval;
175}
176
177static void marshal_event(int len, int *buffer)
178{
179 unsigned long i, flags, cpu = get_physical_cpu();
180
181 if (len <= 0)
182 return;
183
Jon Medhurst96b56152014-10-30 18:01:15 +0000184 /* length must be even since all data is a (key, value) pair */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100185 if (len & 0x1) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000186 pr_err("gator: invalid counter data detected and discarded\n");
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100187 return;
188 }
189
Jon Medhurst96b56152014-10-30 18:01:15 +0000190 /* events must be written in key,value pairs */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100191 local_irq_save(flags);
192 for (i = 0; i < len; i += 2) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000193 if (!buffer_check_space(cpu, BLOCK_COUNTER_BUF, 2 * MAXSIZE_PACK32))
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100194 break;
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100195 gator_buffer_write_packed_int(cpu, BLOCK_COUNTER_BUF, buffer[i]);
196 gator_buffer_write_packed_int(cpu, BLOCK_COUNTER_BUF, buffer[i + 1]);
197 }
198 local_irq_restore(flags);
199}
200
201static void marshal_event64(int len, long long *buffer64)
202{
203 unsigned long i, flags, cpu = get_physical_cpu();
204
205 if (len <= 0)
206 return;
207
Jon Medhurst96b56152014-10-30 18:01:15 +0000208 /* length must be even since all data is a (key, value) pair */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100209 if (len & 0x1) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000210 pr_err("gator: invalid counter data detected and discarded\n");
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100211 return;
212 }
213
Jon Medhurst96b56152014-10-30 18:01:15 +0000214 /* events must be written in key,value pairs */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100215 local_irq_save(flags);
216 for (i = 0; i < len; i += 2) {
Jon Medhurst96b56152014-10-30 18:01:15 +0000217 if (!buffer_check_space(cpu, BLOCK_COUNTER_BUF, 2 * MAXSIZE_PACK64))
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100218 break;
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100219 gator_buffer_write_packed_int64(cpu, BLOCK_COUNTER_BUF, buffer64[i]);
220 gator_buffer_write_packed_int64(cpu, BLOCK_COUNTER_BUF, buffer64[i + 1]);
221 }
222 local_irq_restore(flags);
223}
224
Jon Medhurst96b56152014-10-30 18:01:15 +0000225static void __maybe_unused marshal_event_single(int core, int key, int value)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100226{
227 unsigned long flags, cpu;
228 u64 time;
229
230 local_irq_save(flags);
231 cpu = get_physical_cpu();
232 time = gator_get_time();
233 if (buffer_check_space(cpu, COUNTER_BUF, MAXSIZE_PACK64 + 3 * MAXSIZE_PACK32)) {
234 gator_buffer_write_packed_int64(cpu, COUNTER_BUF, time);
235 gator_buffer_write_packed_int(cpu, COUNTER_BUF, core);
236 gator_buffer_write_packed_int(cpu, COUNTER_BUF, key);
237 gator_buffer_write_packed_int(cpu, COUNTER_BUF, value);
238 }
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100239 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000240 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100241 buffer_check(cpu, COUNTER_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100242}
Jon Medhurste31266f2014-08-04 15:47:44 +0100243
Jon Medhurst96b56152014-10-30 18:01:15 +0000244static void __maybe_unused marshal_event_single64(int core, int key, long long value)
Jon Medhurste31266f2014-08-04 15:47:44 +0100245{
246 unsigned long flags, cpu;
247 u64 time;
248
249 local_irq_save(flags);
250 cpu = get_physical_cpu();
251 time = gator_get_time();
252 if (buffer_check_space(cpu, COUNTER_BUF, 2 * MAXSIZE_PACK64 + 2 * MAXSIZE_PACK32)) {
253 gator_buffer_write_packed_int64(cpu, COUNTER_BUF, time);
254 gator_buffer_write_packed_int(cpu, COUNTER_BUF, core);
255 gator_buffer_write_packed_int(cpu, COUNTER_BUF, key);
256 gator_buffer_write_packed_int64(cpu, COUNTER_BUF, value);
257 }
258 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000259 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurste31266f2014-08-04 15:47:44 +0100260 buffer_check(cpu, COUNTER_BUF, time);
261}
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100262
Jon Medhurste31266f2014-08-04 15:47:44 +0100263static void marshal_sched_trace_switch(int pid, int state)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100264{
265 unsigned long cpu = get_physical_cpu(), flags;
266 u64 time;
267
268 if (!per_cpu(gator_buffer, cpu)[SCHED_TRACE_BUF])
269 return;
270
271 local_irq_save(flags);
272 time = gator_get_time();
273 if (buffer_check_space(cpu, SCHED_TRACE_BUF, MAXSIZE_PACK64 + 5 * MAXSIZE_PACK32)) {
274 gator_buffer_write_packed_int(cpu, SCHED_TRACE_BUF, MESSAGE_SCHED_SWITCH);
275 gator_buffer_write_packed_int64(cpu, SCHED_TRACE_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100276 gator_buffer_write_packed_int(cpu, SCHED_TRACE_BUF, pid);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100277 gator_buffer_write_packed_int(cpu, SCHED_TRACE_BUF, state);
278 }
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100279 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000280 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100281 buffer_check(cpu, SCHED_TRACE_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100282}
283
284static void marshal_sched_trace_exit(int tgid, int pid)
285{
286 unsigned long cpu = get_physical_cpu(), flags;
287 u64 time;
288
289 if (!per_cpu(gator_buffer, cpu)[SCHED_TRACE_BUF])
290 return;
291
292 local_irq_save(flags);
293 time = gator_get_time();
294 if (buffer_check_space(cpu, SCHED_TRACE_BUF, MAXSIZE_PACK64 + 2 * MAXSIZE_PACK32)) {
295 gator_buffer_write_packed_int(cpu, SCHED_TRACE_BUF, MESSAGE_SCHED_EXIT);
296 gator_buffer_write_packed_int64(cpu, SCHED_TRACE_BUF, time);
297 gator_buffer_write_packed_int(cpu, SCHED_TRACE_BUF, pid);
298 }
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100299 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000300 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100301 buffer_check(cpu, SCHED_TRACE_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100302}
303
304#if GATOR_CPU_FREQ_SUPPORT
305static void marshal_idle(int core, int state)
306{
307 unsigned long flags, cpu;
308 u64 time;
309
310 local_irq_save(flags);
311 cpu = get_physical_cpu();
312 time = gator_get_time();
313 if (buffer_check_space(cpu, IDLE_BUF, MAXSIZE_PACK64 + 2 * MAXSIZE_PACK32)) {
314 gator_buffer_write_packed_int(cpu, IDLE_BUF, state);
315 gator_buffer_write_packed_int64(cpu, IDLE_BUF, time);
316 gator_buffer_write_packed_int(cpu, IDLE_BUF, core);
317 }
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100318 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000319 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100320 buffer_check(cpu, IDLE_BUF, time);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100321}
322#endif
323
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100324#if defined(__arm__) || defined(__aarch64__)
Jon Medhurstd3698592013-10-10 16:48:56 +0100325static void marshal_core_name(const int core, const int cpuid, const char *name)
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100326{
327 int cpu = get_physical_cpu();
328 unsigned long flags;
Jon Medhurst96b56152014-10-30 18:01:15 +0000329
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100330 local_irq_save(flags);
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100331 if (buffer_check_space(cpu, SUMMARY_BUF, MAXSIZE_PACK32 + MAXSIZE_CORE_NAME)) {
332 gator_buffer_write_packed_int(cpu, SUMMARY_BUF, MESSAGE_CORE_NAME);
333 gator_buffer_write_packed_int(cpu, SUMMARY_BUF, core);
334 gator_buffer_write_packed_int(cpu, SUMMARY_BUF, cpuid);
335 gator_buffer_write_string(cpu, SUMMARY_BUF, name);
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100336 }
Jon Medhurst96b56152014-10-30 18:01:15 +0000337 /* Commit core names now so that they can show up in live */
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100338 local_irq_restore(flags);
Jon Medhurst15ce78d2014-04-10 09:02:02 +0100339 gator_commit_buffer(cpu, SUMMARY_BUF, gator_get_time());
Jon Medhurstaaf37a32013-06-11 12:10:56 +0100340}
341#endif
Jon Medhurste31266f2014-08-04 15:47:44 +0100342
343static void marshal_activity_switch(int core, int key, int activity, int pid, int state)
344{
345 unsigned long cpu = get_physical_cpu(), flags;
346 u64 time;
347
348 if (!per_cpu(gator_buffer, cpu)[ACTIVITY_BUF])
349 return;
350
351 local_irq_save(flags);
352 time = gator_get_time();
353 if (buffer_check_space(cpu, ACTIVITY_BUF, MAXSIZE_PACK64 + 5 * MAXSIZE_PACK32)) {
354 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, MESSAGE_SWITCH);
355 gator_buffer_write_packed_int64(cpu, ACTIVITY_BUF, time);
356 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, core);
357 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, key);
358 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, activity);
359 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, pid);
360 gator_buffer_write_packed_int(cpu, ACTIVITY_BUF, state);
361 }
362 local_irq_restore(flags);
Jon Medhurst96b56152014-10-30 18:01:15 +0000363 /* Check and commit; commit is set to occur once buffer is 3/4 full */
Jon Medhurste31266f2014-08-04 15:47:44 +0100364 buffer_check(cpu, ACTIVITY_BUF, time);
365}
366
367void gator_marshal_activity_switch(int core, int key, int activity, int pid)
368{
Jon Medhurst96b56152014-10-30 18:01:15 +0000369 /* state is reserved for cpu use only */
Jon Medhurste31266f2014-08-04 15:47:44 +0100370 marshal_activity_switch(core, key, activity, pid, 0);
371}