2024-06-04 12:33:50

by Ivan Orlov

[permalink] [raw]
Subject: [PATCH 1/5] kunit: string-stream: export non-static functions

Export non-static functions from the string-stream.c file into the KUnit
namespace in order to be able to access them from the KUnit core tests
(when they are loaded as modules).

Signed-off-by: Ivan Orlov <[email protected]>
---
lib/kunit/string-stream.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/lib/kunit/string-stream.c b/lib/kunit/string-stream.c
index 54f4fdcbfac8..a5e3339854da 100644
--- a/lib/kunit/string-stream.c
+++ b/lib/kunit/string-stream.c
@@ -10,7 +10,7 @@
#include <kunit/test.h>
#include <linux/list.h>
#include <linux/slab.h>
-
+#include <kunit/visibility.h>
#include "string-stream.h"


@@ -86,6 +86,7 @@ int string_stream_vadd(struct string_stream *stream,

return 0;
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_vadd);

int string_stream_add(struct string_stream *stream, const char *fmt, ...)
{
@@ -98,6 +99,7 @@ int string_stream_add(struct string_stream *stream, const char *fmt, ...)

return result;
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_add);

void string_stream_clear(struct string_stream *stream)
{
@@ -113,6 +115,7 @@ void string_stream_clear(struct string_stream *stream)
stream->length = 0;
spin_unlock(&stream->lock);
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_clear);

char *string_stream_get_string(struct string_stream *stream)
{
@@ -131,6 +134,7 @@ char *string_stream_get_string(struct string_stream *stream)

return buf;
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_get_string);

int string_stream_append(struct string_stream *stream,
struct string_stream *other)
@@ -148,11 +152,13 @@ int string_stream_append(struct string_stream *stream,

return ret;
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_append);

bool string_stream_is_empty(struct string_stream *stream)
{
return list_empty(&stream->fragments);
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_is_empty);

struct string_stream *alloc_string_stream(gfp_t gfp)
{
@@ -168,6 +174,7 @@ struct string_stream *alloc_string_stream(gfp_t gfp)

return stream;
}
+EXPORT_SYMBOL_IF_KUNIT(alloc_string_stream);

void string_stream_destroy(struct string_stream *stream)
{
@@ -179,6 +186,7 @@ void string_stream_destroy(struct string_stream *stream)
string_stream_clear(stream);
kfree(stream);
}
+EXPORT_SYMBOL_IF_KUNIT(string_stream_destroy);

static void resource_free_string_stream(void *p)
{
@@ -200,8 +208,10 @@ struct string_stream *kunit_alloc_string_stream(struct kunit *test, gfp_t gfp)

return stream;
}
+EXPORT_SYMBOL_IF_KUNIT(kunit_alloc_string_stream);

void kunit_free_string_stream(struct kunit *test, struct string_stream *stream)
{
kunit_release_action(test, resource_free_string_stream, (void *)stream);
}
+EXPORT_SYMBOL_IF_KUNIT(kunit_free_string_stream);
--
2.34.1



2024-06-08 09:20:39

by David Gow

[permalink] [raw]
Subject: Re: [PATCH 1/5] kunit: string-stream: export non-static functions

On Tue, 4 Jun 2024 at 20:32, Ivan Orlov <[email protected]> wrote:
>
> Export non-static functions from the string-stream.c file into the KUnit
> namespace in order to be able to access them from the KUnit core tests
> (when they are loaded as modules).
>
> Signed-off-by: Ivan Orlov <[email protected]>
> ---

Looks good to me, thanks.

It's very slightly hilarious to use EXPORT_SYMBOL_IF_KUNIT() here,
because _of course_ KUnit is enabled, but I think it's the right idea
nevertheless.

Reviewed-by: David Gow <[email protected]>

Cheers,
-- David


> lib/kunit/string-stream.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/lib/kunit/string-stream.c b/lib/kunit/string-stream.c
> index 54f4fdcbfac8..a5e3339854da 100644
> --- a/lib/kunit/string-stream.c
> +++ b/lib/kunit/string-stream.c
> @@ -10,7 +10,7 @@
> #include <kunit/test.h>
> #include <linux/list.h>
> #include <linux/slab.h>
> -
> +#include <kunit/visibility.h>
> #include "string-stream.h"
>
>
> @@ -86,6 +86,7 @@ int string_stream_vadd(struct string_stream *stream,
>
> return 0;
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_vadd);
>
> int string_stream_add(struct string_stream *stream, const char *fmt, ...)
> {
> @@ -98,6 +99,7 @@ int string_stream_add(struct string_stream *stream, const char *fmt, ...)
>
> return result;
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_add);
>
> void string_stream_clear(struct string_stream *stream)
> {
> @@ -113,6 +115,7 @@ void string_stream_clear(struct string_stream *stream)
> stream->length = 0;
> spin_unlock(&stream->lock);
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_clear);
>
> char *string_stream_get_string(struct string_stream *stream)
> {
> @@ -131,6 +134,7 @@ char *string_stream_get_string(struct string_stream *stream)
>
> return buf;
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_get_string);
>
> int string_stream_append(struct string_stream *stream,
> struct string_stream *other)
> @@ -148,11 +152,13 @@ int string_stream_append(struct string_stream *stream,
>
> return ret;
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_append);
>
> bool string_stream_is_empty(struct string_stream *stream)
> {
> return list_empty(&stream->fragments);
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_is_empty);
>
> struct string_stream *alloc_string_stream(gfp_t gfp)
> {
> @@ -168,6 +174,7 @@ struct string_stream *alloc_string_stream(gfp_t gfp)
>
> return stream;
> }
> +EXPORT_SYMBOL_IF_KUNIT(alloc_string_stream);
>
> void string_stream_destroy(struct string_stream *stream)
> {
> @@ -179,6 +186,7 @@ void string_stream_destroy(struct string_stream *stream)
> string_stream_clear(stream);
> kfree(stream);
> }
> +EXPORT_SYMBOL_IF_KUNIT(string_stream_destroy);
>
> static void resource_free_string_stream(void *p)
> {
> @@ -200,8 +208,10 @@ struct string_stream *kunit_alloc_string_stream(struct kunit *test, gfp_t gfp)
>
> return stream;
> }
> +EXPORT_SYMBOL_IF_KUNIT(kunit_alloc_string_stream);
>
> void kunit_free_string_stream(struct kunit *test, struct string_stream *stream)
> {
> kunit_release_action(test, resource_free_string_stream, (void *)stream);
> }
> +EXPORT_SYMBOL_IF_KUNIT(kunit_free_string_stream);
> --
> 2.34.1
>


Attachments:
smime.p7s (3.92 kB)
S/MIME Cryptographic Signature

2024-06-09 19:01:41

by Ivan Orlov

[permalink] [raw]
Subject: Re: [PATCH 1/5] kunit: string-stream: export non-static functions

On 6/8/24 10:20, David Gow wrote:
> On Tue, 4 Jun 2024 at 20:32, Ivan Orlov <[email protected]> wrote:
>>
>> Export non-static functions from the string-stream.c file into the KUnit
>> namespace in order to be able to access them from the KUnit core tests
>> (when they are loaded as modules).
>>
>> Signed-off-by: Ivan Orlov <[email protected]>
>> ---
>
> Looks good to me, thanks.
>
> It's very slightly hilarious to use EXPORT_SYMBOL_IF_KUNIT() here,
> because _of course_ KUnit is enabled, but I think it's the right idea
> nevertheless.
>
> Reviewed-by: David Gow <[email protected]>

Hi David,

Thank you for the review.

Yes, the name of the EXPORT_SYMBOL_IF_KUNIT macro in this case is a bit
confusing... It is used not only to export the symbol conditionally (if
CONFIG_KUNIT is enabled), but also to export the symbol into the KUnit
namespace (so I used it as a shortcut for this action here) :)

--
Kind regards,
Ivan Orlov