• David Gow's avatar
    kunit: Add kunit_add_action() to defer a call until test exit · b9dce8a1
    David Gow authored
    Many uses of the KUnit resource system are intended to simply defer
    calling a function until the test exits (be it due to success or
    failure). The existing kunit_alloc_resource() function is often used for
    this, but was awkward to use (requiring passing NULL init functions, etc),
    and returned a resource without incrementing its reference count, which
    -- while okay for this use-case -- could cause problems in others.
    
    Instead, introduce a simple kunit_add_action() API: a simple function
    (returning nothing, accepting a single void* argument) can be scheduled
    to be called when the test exits. Deferred actions are called in the
    opposite order to that which they were registered.
    
    This mimics the devres API, devm_add_action(), and also provides
    kunit_remove_action(), to cancel a deferred action, and
    kunit_release_action() to trigger one early.
    
    This is implemented as a resource under the hood, so the ordering
    between resource cleanup and deferred functions is maintained.
    Reviewed-by: default avatarBenjamin Berg <benjamin.berg@intel.com>
    Reviewed-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Tested-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Signed-off-by: default avatarDavid Gow <davidgow@google.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    b9dce8a1
resource.c 4.33 KB