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

string-stream.h (1249B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * C++ stream style string builder used in KUnit for building messages.
      4 *
      5 * Copyright (C) 2019, Google LLC.
      6 * Author: Brendan Higgins <brendanhiggins@google.com>
      7 */
      8
      9#ifndef _KUNIT_STRING_STREAM_H
     10#define _KUNIT_STRING_STREAM_H
     11
     12#include <linux/spinlock.h>
     13#include <linux/types.h>
     14#include <linux/stdarg.h>
     15
     16struct string_stream_fragment {
     17	struct kunit *test;
     18	struct list_head node;
     19	char *fragment;
     20};
     21
     22struct string_stream {
     23	size_t length;
     24	struct list_head fragments;
     25	/* length and fragments are protected by this lock */
     26	spinlock_t lock;
     27	struct kunit *test;
     28	gfp_t gfp;
     29};
     30
     31struct kunit;
     32
     33struct string_stream *alloc_string_stream(struct kunit *test, gfp_t gfp);
     34
     35int __printf(2, 3) string_stream_add(struct string_stream *stream,
     36				     const char *fmt, ...);
     37
     38int __printf(2, 0) string_stream_vadd(struct string_stream *stream,
     39				      const char *fmt,
     40				      va_list args);
     41
     42char *string_stream_get_string(struct string_stream *stream);
     43
     44int string_stream_append(struct string_stream *stream,
     45			 struct string_stream *other);
     46
     47bool string_stream_is_empty(struct string_stream *stream);
     48
     49int string_stream_destroy(struct string_stream *stream);
     50
     51#endif /* _KUNIT_STRING_STREAM_H */