diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:29:09 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:29:09 -0800 |
commit | 55a2c71f27d3e0b8344597c7f281e687cb7aeb1b (patch) | |
tree | ecd18b995aea8eeeb8b3823266280d41245bf0f7 /emulator/qtools/tests/macros.h | |
parent | 82ea7a177797b844b252effea5c7c7c5d63ea4ac (diff) | |
download | sdk-55a2c71f27d3e0b8344597c7f281e687cb7aeb1b.zip sdk-55a2c71f27d3e0b8344597c7f281e687cb7aeb1b.tar.gz sdk-55a2c71f27d3e0b8344597c7f281e687cb7aeb1b.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'emulator/qtools/tests/macros.h')
-rw-r--r-- | emulator/qtools/tests/macros.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/emulator/qtools/tests/macros.h b/emulator/qtools/tests/macros.h new file mode 100644 index 0000000..066374b --- /dev/null +++ b/emulator/qtools/tests/macros.h @@ -0,0 +1,93 @@ +#ifndef _TEST_TRACE_C_H_ +#define _TEST_TRACE_C_H_ + +/* the base address of trace device */ +#define TRACE_DEV_BASE_ADDR 0x21000000 + +/*the register addresses of the trace device */ +#define TRACE_DEV_REG_SWITCH 0 +#define TRACE_DEV_REG_FORK 1 +#define TRACE_DEV_REG_EXECVE_PID 2 +#define TRACE_DEV_REG_EXECVE_VMSTART 3 +#define TRACE_DEV_REG_EXECVE_VMEND 4 +#define TRACE_DEV_REG_EXECVE_OFFSET 5 +#define TRACE_DEV_REG_EXECVE_EXEPATH 6 +#define TRACE_DEV_REG_EXIT 7 +#define TRACE_DEV_REG_CMDLINE 8 +#define TRACE_DEV_REG_CMDLINE_LEN 9 +#define TRACE_DEV_REG_MMAP_EXEPATH 10 +#define TRACE_DEV_REG_INIT_PID 11 +#define TRACE_DEV_REG_INIT_NAME 12 +#define TRACE_DEV_REG_CLONE 13 +#define TRACE_DEV_REG_DYN_SYM 50 +#define TRACE_DEV_REG_DYN_SYM_ADDR 51 +#define TRACE_DEV_REG_PRINT_STR 60 +#define TRACE_DEV_REG_PRINT_NUM_DEC 61 +#define TRACE_DEV_REG_PRINT_NUM_HEX 62 +#define TRACE_DEV_REG_STOP_EMU 90 +#define TRACE_DEV_REG_ENABLE 100 +#define TRACE_DEV_REG_DISABLE 101 + +/* write a word to a trace device register */ +#define DEV_WRITE_WORD(addr,value)\ + (*(volatile unsigned long *)(TRACE_DEV_BASE_ADDR + ((addr) << 2)) = (value)) + +/*************************************************************/ +/* generates test events */ + +/* context switch */ +#define TRACE_SWITCH(pid) DEV_WRITE_WORD(TRACE_DEV_REG_SWITCH, (pid)) +/* fork */ +#define TRACE_FORK(pid) DEV_WRITE_WORD(TRACE_DEV_REG_FORK, (pid)) +/* clone */ +#define TRACE_CLONE(pid) DEV_WRITE_WORD(TRACE_DEV_REG_CLONE, (pid)) +/* dump name and path of threads executed before trace device created */ +#define TRACE_INIT_NAME(pid,path)\ +do {\ + DEV_WRITE_WORD(TRACE_DEV_REG_INIT_PID, (pid));\ + DEV_WRITE_WORD(TRACE_DEV_REG_INIT_NAME, (unsigned long)(path));\ +}while(0) +/* dump exec mapping of threads executed before trace device created */ +#define TRACE_INIT_EXEC(vstart,vend,eoff,path)\ +do {\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_VMSTART, (vstart));\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_VMEND, (vend));\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_OFFSET, (eoff));\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_EXEPATH, (unsigned long)(path));\ +}while(0) +/* mmap */ +#define TRACE_MMAP(vstart,vend,eoff,path)\ +do {\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_VMSTART, (vstart));\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_VMEND, (vend));\ + DEV_WRITE_WORD(TRACE_DEV_REG_EXECVE_OFFSET, (eoff));\ + DEV_WRITE_WORD(TRACE_DEV_REG_MMAP_EXEPATH, (unsigned long)(path));\ +}while(0) +/* execve */ +#define TRACE_EXECVE(cmdlen,cmd)\ +do {\ + DEV_WRITE_WORD(TRACE_DEV_REG_CMDLINE_LEN, (cmdlen));\ + DEV_WRITE_WORD(TRACE_DEV_REG_CMDLINE, (unsigned long)(cmd));\ +}while(0) +/* exit */ +#define TRACE_EXIT(retv) DEV_WRITE_WORD(TRACE_DEV_REG_EXIT, (retv)) + +/* other commands */ + +/* stop emulation */ +#define TRACE_STOP_EMU() DEV_WRITE_WORD(TRACE_DEV_REG_STOP_EMU, 1) +/* enable/disable tracing */ +#define TRACE_ENABLE_TRACING() DEV_WRITE_WORD(TRACE_DEV_REG_ENABLE, 1) +#define TRACE_DISABLE_TRACING() DEV_WRITE_WORD(TRACE_DEV_REG_DISABLE, 1) +/* dynamic symbols */ +#define TRACE_DYN_SYM(addr,sym)\ +do {\ + DEV_WRITE_WORD(TRACE_DEV_REG_DYN_SYM_ADDR, (addr));\ + DEV_WRITE_WORD(TRACE_DEV_REG_DYN_SYM, (unsigned long)(sym));\ +}while(0) +/* prints */ +#define PRINT_STR(str) DEV_WRITE_WORD(TRACE_DEV_REG_PRINT_STR, (unsigned long)(str)) +#define PRINT_NUM_DEC(num) DEV_WRITE_WORD(TRACE_DEV_REG_PRINT_NUM_DEC, (num)) +#define PRINT_NUM_HEX(num) DEV_WRITE_WORD(TRACE_DEV_REG_PRINT_NUM_HEX, (num)) + +#endif |