diff options
Diffstat (limited to 'include/iotrace.h')
-rw-r--r-- | include/iotrace.h | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/include/iotrace.h b/include/iotrace.h index 1efb117343..be1d2753e1 100644 --- a/include/iotrace.h +++ b/include/iotrace.h @@ -6,8 +6,36 @@ #ifndef __IOTRACE_H #define __IOTRACE_H +//#include <common.h> #include <linux/types.h> +/* Support up to the machine word length for now */ +typedef ulong iovalue_t; + +enum iotrace_flags { + IOT_8 = 0, + IOT_16, + IOT_32, + + IOT_READ = 0 << 3, + IOT_WRITE = 1 << 3, +}; + +/** + * struct iotrace_record - Holds a single I/O trace record + * + * @flags: I/O access type + * @timestamp: Timestamp of access + * @addr: Address of access + * @value: Value written or read + */ +struct iotrace_record { + enum iotrace_flags flags; + u64 timestamp; + phys_addr_t addr; + iovalue_t value; +}; + /* * This file is designed to be included in arch/<arch>/include/asm/io.h. * It redirects all IO access through a tracing/checksumming feature for @@ -118,11 +146,12 @@ void iotrace_set_buffer(ulong start, ulong size); * iotrace_get_buffer() - Get buffer information * * @start: Returns start address of buffer - * @size: Returns size of buffer in bytes + * @size: Returns actual size of buffer in bytes + * @needed_size: Returns needed size of buffer in bytes * @offset: Returns the byte offset where the next output trace record will * @count: Returns the number of trace records recorded * be written (or would be if the buffer was large enough) */ -void iotrace_get_buffer(ulong *start, ulong *size, ulong *offset, ulong *count); +void iotrace_get_buffer(ulong *start, ulong *size, ulong *needed_size, ulong *offset, ulong *count); #endif /* __IOTRACE_H */ |