root/tools/lib/traceevent/trace-seq.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */