On Thu, May 2, 2019 at 6:26 PM shuah shuah@kernel.org wrote:
On 5/1/19 5:01 PM, Brendan Higgins wrote:
< snip >
diff --git a/kunit/Makefile b/kunit/Makefile index 5efdc4dea2c08..275b565a0e81f 100644 --- a/kunit/Makefile +++ b/kunit/Makefile @@ -1 +1,2 @@ -obj-$(CONFIG_KUNIT) += test.o +obj-$(CONFIG_KUNIT) += test.o \
string-stream.o
diff --git a/kunit/string-stream.c b/kunit/string-stream.c new file mode 100644 index 0000000000000..7018194ecf2fa --- /dev/null +++ b/kunit/string-stream.c @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- C++ stream style string builder used in KUnit for building messages.
- Copyright (C) 2019, Google LLC.
- Author: Brendan Higgins brendanhiggins@google.com
- */
+#include <linux/list.h> +#include <linux/slab.h> +#include <kunit/string-stream.h>
+int string_stream_vadd(struct string_stream *this,
const char *fmt,
va_list args)
+{
struct string_stream_fragment *fragment;
Since there is field with the same name, please use a different name. Using the same name for the struct which contains a field of the same name get very confusing and will hard to maintain the code.
int len;
va_list args_for_counting;
unsigned long flags;
/* Make a copy because `vsnprintf` could change it */
va_copy(args_for_counting, args);
/* Need space for null byte. */
len = vsnprintf(NULL, 0, fmt, args_for_counting) + 1;
va_end(args_for_counting);
fragment = kmalloc(sizeof(*fragment), GFP_KERNEL);
if (!fragment)
return -ENOMEM;
fragment->fragment = kmalloc(len, GFP_KERNEL);
This is confusing. See above comment.
Good point. Will fix in the next revision.
< snip >
Thanks!