lkml.org 
[lkml]   [2014]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 16/20] perf: Add a helper for looking up pmus by type
    Date
    This patch adds a helper for looking up a registered pmu by its type.

    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    ---
    kernel/events/core.c | 16 +++++++++++++---
    1 file changed, 13 insertions(+), 3 deletions(-)

    diff --git a/kernel/events/core.c b/kernel/events/core.c
    index d4057dff27..92da1aecc7 100644
    --- a/kernel/events/core.c
    +++ b/kernel/events/core.c
    @@ -6963,6 +6963,18 @@ void perf_pmu_unregister(struct pmu *pmu)
    }
    EXPORT_SYMBOL_GPL(perf_pmu_unregister);

    +/* call under pmus_srcu */
    +static struct pmu *__perf_find_pmu(u32 type)
    +{
    + struct pmu *pmu;
    +
    + rcu_read_lock();
    + pmu = idr_find(&pmu_idr, type);
    + rcu_read_unlock();
    +
    + return pmu;
    +}
    +
    struct pmu *perf_init_event(struct perf_event *event)
    {
    struct pmu *pmu = NULL;
    @@ -6971,9 +6983,7 @@ struct pmu *perf_init_event(struct perf_event *event)

    idx = srcu_read_lock(&pmus_srcu);

    - rcu_read_lock();
    - pmu = idr_find(&pmu_idr, event->attr.type);
    - rcu_read_unlock();
    + pmu = __perf_find_pmu(event->attr.type);
    if (pmu) {
    if (!try_module_get(pmu->module)) {
    pmu = ERR_PTR(-ENODEV);
    --
    2.1.0


    \
     
     \ /
      Last update: 2014-10-13 16:21    [W:4.046 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site