annotate examples/instrument-test.c @ 3253:f2e7134c0eec

Add support for K60F120M [ Bugzilla 1001861 ]
author vae
date Mon, 01 Jul 2013 08:09:45 +0000
parents ead06911cbae
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
168
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
1 /* this is a program which uses eCos instrumentation buffers; it needs
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
2 to be linked with a kernel which was compiled with support for
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
3 instrumentation */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
4
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
5 #include <stdio.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
6 #include <pkgconf/kernel.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
7 #include <cyg/kernel/instrmnt.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
8 #include <cyg/kernel/kapi.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
9
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
10 #ifndef CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
11 # error You must configure eCos with CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
12 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
13
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
14 struct Instrument_Record
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
15 {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
16 CYG_WORD16 type; // record type
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
17 CYG_WORD16 thread; // current thread id
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
18 CYG_WORD timestamp; // 32 bit timestamp
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
19 CYG_WORD arg1; // first arg
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
20 CYG_WORD arg2; // second arg
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
21 };
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
22
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
23 struct Instrument_Record instrument_buffer[20];
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
24 cyg_uint32 instrument_buffer_size = 20;
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
25
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
26 int main(void)
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
27 {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
28 int i;
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
29
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
30 cyg_instrument_enable(CYG_INSTRUMENT_CLASS_CLOCK, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
31 cyg_instrument_enable(CYG_INSTRUMENT_CLASS_THREAD, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
32 cyg_instrument_enable(CYG_INSTRUMENT_CLASS_ALARM, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
33
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
34 printf("Program to play with instrumentation buffer\n");
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
35
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
36 cyg_thread_delay(2);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
37
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
38 cyg_instrument_disable(CYG_INSTRUMENT_CLASS_CLOCK, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
39 cyg_instrument_disable(CYG_INSTRUMENT_CLASS_THREAD, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
40 cyg_instrument_disable(CYG_INSTRUMENT_CLASS_ALARM, 0);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
41
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
42 for (i = 0; i < instrument_buffer_size; ++i) {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
43 printf("Record %02d: type 0x%04x, thread %d, ",
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
44 i, instrument_buffer[i].type, instrument_buffer[i].thread);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
45 printf("time %5d, arg1 0x%08x, arg2 0x%08x\n",
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
46 instrument_buffer[i].timestamp, instrument_buffer[i].arg1,
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
47 instrument_buffer[i].arg2);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
48 }
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
49 return 0;
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
50 }