1*436bf2bcSAndroid Build Coastguard Worker // SPDX-License-Identifier: LGPL-2.1 2*436bf2bcSAndroid Build Coastguard Worker /* 3*436bf2bcSAndroid Build Coastguard Worker * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt <[email protected]> 4*436bf2bcSAndroid Build Coastguard Worker * 5*436bf2bcSAndroid Build Coastguard Worker */ 6*436bf2bcSAndroid Build Coastguard Worker 7*436bf2bcSAndroid Build Coastguard Worker #ifndef _TRACE_SEQ_H 8*436bf2bcSAndroid Build Coastguard Worker #define _TRACE_SEQ_H 9*436bf2bcSAndroid Build Coastguard Worker 10*436bf2bcSAndroid Build Coastguard Worker #include <stdarg.h> 11*436bf2bcSAndroid Build Coastguard Worker #include <stdio.h> 12*436bf2bcSAndroid Build Coastguard Worker 13*436bf2bcSAndroid Build Coastguard Worker #ifdef __cplusplus 14*436bf2bcSAndroid Build Coastguard Worker extern "C" { 15*436bf2bcSAndroid Build Coastguard Worker #endif 16*436bf2bcSAndroid Build Coastguard Worker 17*436bf2bcSAndroid Build Coastguard Worker /* ----------------------- trace_seq ----------------------- */ 18*436bf2bcSAndroid Build Coastguard Worker 19*436bf2bcSAndroid Build Coastguard Worker #ifndef TRACE_SEQ_BUF_SIZE 20*436bf2bcSAndroid Build Coastguard Worker #define TRACE_SEQ_BUF_SIZE 4096 21*436bf2bcSAndroid Build Coastguard Worker #endif 22*436bf2bcSAndroid Build Coastguard Worker 23*436bf2bcSAndroid Build Coastguard Worker enum trace_seq_fail { 24*436bf2bcSAndroid Build Coastguard Worker TRACE_SEQ__GOOD, 25*436bf2bcSAndroid Build Coastguard Worker TRACE_SEQ__BUFFER_POISONED, 26*436bf2bcSAndroid Build Coastguard Worker TRACE_SEQ__MEM_ALLOC_FAILED, 27*436bf2bcSAndroid Build Coastguard Worker }; 28*436bf2bcSAndroid Build Coastguard Worker 29*436bf2bcSAndroid Build Coastguard Worker /* 30*436bf2bcSAndroid Build Coastguard Worker * Trace sequences are used to allow a function to call several other functions 31*436bf2bcSAndroid Build Coastguard Worker * to create a string of data to use (up to a max of PAGE_SIZE). 32*436bf2bcSAndroid Build Coastguard Worker */ 33*436bf2bcSAndroid Build Coastguard Worker 34*436bf2bcSAndroid Build Coastguard Worker struct trace_seq { 35*436bf2bcSAndroid Build Coastguard Worker char *buffer; 36*436bf2bcSAndroid Build Coastguard Worker unsigned int buffer_size; 37*436bf2bcSAndroid Build Coastguard Worker unsigned int len; 38*436bf2bcSAndroid Build Coastguard Worker unsigned int readpos; 39*436bf2bcSAndroid Build Coastguard Worker enum trace_seq_fail state; 40*436bf2bcSAndroid Build Coastguard Worker }; 41*436bf2bcSAndroid Build Coastguard Worker 42*436bf2bcSAndroid Build Coastguard Worker void trace_seq_init(struct trace_seq *s); 43*436bf2bcSAndroid Build Coastguard Worker void trace_seq_reset(struct trace_seq *s); 44*436bf2bcSAndroid Build Coastguard Worker void trace_seq_destroy(struct trace_seq *s); 45*436bf2bcSAndroid Build Coastguard Worker 46*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...) 47*436bf2bcSAndroid Build Coastguard Worker __attribute__ ((format (printf, 2, 3))); 48*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args) 49*436bf2bcSAndroid Build Coastguard Worker __attribute__ ((format (printf, 2, 0))); 50*436bf2bcSAndroid Build Coastguard Worker 51*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_puts(struct trace_seq *s, const char *str); 52*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_putc(struct trace_seq *s, unsigned char c); 53*436bf2bcSAndroid Build Coastguard Worker 54*436bf2bcSAndroid Build Coastguard Worker extern void trace_seq_terminate(struct trace_seq *s); 55*436bf2bcSAndroid Build Coastguard Worker 56*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_do_fprintf(struct trace_seq *s, FILE *fp); 57*436bf2bcSAndroid Build Coastguard Worker extern int trace_seq_do_printf(struct trace_seq *s); 58*436bf2bcSAndroid Build Coastguard Worker 59*436bf2bcSAndroid Build Coastguard Worker #ifdef __cplusplus 60*436bf2bcSAndroid Build Coastguard Worker } 61*436bf2bcSAndroid Build Coastguard Worker #endif 62*436bf2bcSAndroid Build Coastguard Worker 63*436bf2bcSAndroid Build Coastguard Worker #endif /* _TRACE_SEQ_H */ 64