lib/kunit/backtrace-suppression-test.c

Source file repositories/reference/linux-study-clean/lib/kunit/backtrace-suppression-test.c

File Facts

System
Linux kernel
Corpus path
lib/kunit/backtrace-suppression-test.c
Extension
.c
Size
5406 bytes
Lines
199
Domain
Kernel Services
Bucket
lib
Inferred role
Kernel Services: implementation source
Status
source implementation candidate

Why This File Exists

Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.

Dependency Surface

Detected Declarations

Annotated Snippet

struct cross_kthread_data {
	bool was_active;
	struct completion done;
};

static int cross_kthread_fn(void *data)
{
	struct cross_kthread_data *d = data;

	d->was_active = kunit_has_active_suppress_warning();
	complete(&d->done);
	while (!kthread_should_stop())
		schedule();
	return 0;
}

static void backtrace_suppression_test_cross_kthread(struct kunit *test)
{
	struct cross_kthread_data data;
	struct task_struct *task;

	data.was_active = false;
	init_completion(&data.done);

	kunit_warning_suppress(test) {
		task = kthread_run(cross_kthread_fn, &data, "kunit-cross-test");
		KUNIT_ASSERT_FALSE(test, IS_ERR(task));
		wait_for_completion(&data.done);
		kthread_stop(task);
	}

	KUNIT_EXPECT_FALSE(test, data.was_active);
}

static struct kunit_case backtrace_suppression_test_cases[] = {
	KUNIT_CASE(backtrace_suppression_test_warn_direct),
	KUNIT_CASE(backtrace_suppression_test_warn_indirect),
	KUNIT_CASE(backtrace_suppression_test_warn_multi),
	KUNIT_CASE(backtrace_suppression_test_warn_on_direct),
	KUNIT_CASE(backtrace_suppression_test_warn_on_indirect),
	KUNIT_CASE(backtrace_suppression_test_count),
	KUNIT_CASE(backtrace_suppression_test_active_state),
	KUNIT_CASE(backtrace_suppression_test_multi_scope),
	KUNIT_CASE(backtrace_suppression_test_cross_kthread),
	{}
};

static struct kunit_suite backtrace_suppression_test_suite = {
	.name = "backtrace-suppression-test",
	.test_cases = backtrace_suppression_test_cases,
};
kunit_test_suites(&backtrace_suppression_test_suite);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("KUnit test to verify warning backtrace suppression");

Annotation

Implementation Notes