55 lines · 1.4 KB · C
RawDownload
// SPDX-License-Identifier: LGPL-2.1/* * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> * */ #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 */