forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
// 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 */
|
|
|