12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // SPDX-License-Identifier: LGPL-2.1
- /*
- * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt <[email protected]>
- *
- */
- #ifndef _TRACE_SEQ_H
- #define _TRACE_SEQ_H
- #include <stdarg.h>
- #include <stdio.h>
- /* ----------------------- trace_seq ----------------------- */
- #ifndef TRACE_SEQ_BUF_SIZE
- #define TRACE_SEQ_BUF_SIZE 4096
- #endif
- enum trace_seq_fail {
- TRACE_SEQ__GOOD,
- TRACE_SEQ__BUFFER_POISONED,
- TRACE_SEQ__MEM_ALLOC_FAILED,
- };
- /*
- * Trace sequences are used to allow a function to call several other functions
- * to create a string of data to use (up to a max of PAGE_SIZE).
- */
- struct trace_seq {
- char *buffer;
- unsigned int buffer_size;
- unsigned int len;
- unsigned int readpos;
- enum trace_seq_fail state;
- };
- void trace_seq_init(struct trace_seq *s);
- void trace_seq_reset(struct trace_seq *s);
- void trace_seq_destroy(struct trace_seq *s);
- extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
- __attribute__ ((format (printf, 2, 3)));
- extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args)
- __attribute__ ((format (printf, 2, 0)));
- extern int trace_seq_puts(struct trace_seq *s, const char *str);
- extern int trace_seq_putc(struct trace_seq *s, unsigned char c);
- extern void trace_seq_terminate(struct trace_seq *s);
- extern int trace_seq_do_fprintf(struct trace_seq *s, FILE *fp);
- extern int trace_seq_do_printf(struct trace_seq *s);
- #endif /* _TRACE_SEQ_H */
|