cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

trace-seq.h (1435B)


      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
     19enum 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
     30struct 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
     38void trace_seq_init(struct trace_seq *s);
     39void trace_seq_reset(struct trace_seq *s);
     40void trace_seq_destroy(struct trace_seq *s);
     41
     42extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
     43	__attribute__ ((format (printf, 2, 3)));
     44extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args)
     45	__attribute__ ((format (printf, 2, 0)));
     46
     47extern int trace_seq_puts(struct trace_seq *s, const char *str);
     48extern int trace_seq_putc(struct trace_seq *s, unsigned char c);
     49
     50extern void trace_seq_terminate(struct trace_seq *s);
     51
     52extern int trace_seq_do_fprintf(struct trace_seq *s, FILE *fp);
     53extern int trace_seq_do_printf(struct trace_seq *s);
     54
     55#endif /* _TRACE_SEQ_H */