/* * Tests that a platform bus, non-probed device will run its * device-managed actions when unregistered.
*/ staticvoid platform_device_devm_register_unregister_test(struct kunit *test)
{ struct platform_device *pdev; struct test_priv *priv = test->priv; int ret;
ret = platform_device_add(pdev);
KUNIT_ASSERT_EQ(test, ret, 0);
priv->dev = &pdev->dev;
ret = devm_add_action_or_reset(priv->dev, devm_device_action, priv);
KUNIT_ASSERT_EQ(test, ret, 0);
platform_device_unregister(pdev);
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
KUNIT_EXPECT_GT(test, ret, 0);
}
/* * Tests that a platform bus, non-probed device will run its * device-managed actions when unregistered, even if someone still holds * a reference to it.
*/ staticvoid platform_device_devm_register_get_unregister_with_devm_test(struct kunit *test)
{ struct platform_device *pdev; struct test_priv *priv = test->priv; int ret;
/* * Tests that a platform bus, probed device will run its device-managed * actions when unregistered.
*/ staticvoid probed_platform_device_devm_register_unregister_test(struct kunit *test)
{ struct platform_device *pdev; struct test_priv *priv = test->priv; int ret;
ret = platform_driver_register(&fake_driver);
KUNIT_ASSERT_EQ(test, ret, 0);
ret = platform_device_add(pdev);
KUNIT_ASSERT_EQ(test, ret, 0);
ret = wait_event_interruptible_timeout(priv->probe_wq, priv->probe_done,
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
KUNIT_ASSERT_GT(test, ret, 0);
ret = devm_add_action_or_reset(priv->dev, devm_device_action, priv);
KUNIT_ASSERT_EQ(test, ret, 0);
platform_device_unregister(pdev);
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
KUNIT_EXPECT_GT(test, ret, 0);
platform_driver_unregister(&fake_driver);
}
/* * Tests that a platform bus, probed device will run its device-managed * actions when unregistered, even if someone still holds a reference to * it.
*/ staticvoid probed_platform_device_devm_register_get_unregister_with_devm_test(struct kunit *test)
{ struct platform_device *pdev; struct test_priv *priv = test->priv; int ret;
ret = platform_driver_register(&fake_driver);
KUNIT_ASSERT_EQ(test, ret, 0);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.