lkml.org 
[lkml]   [2023]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 06/25] dyndbg: split param_set_dyndbg_classes to module/wrapper fns
    Date
    rename param_set_dyndbg_classes: add _module_ name & arg, old name is
    wrapper to new. New arg allows caller to specify that only one module
    is affected by a prdbgs update.

    Outer fn preserves kernel_param interface, passing NULL to inner fn.
    This selectivity will be used later to narrow the scope of changes
    made.

    no functional change.

    Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
    ---
    lib/dynamic_debug.c | 37 ++++++++++++++++++++++---------------
    1 file changed, 22 insertions(+), 15 deletions(-)

    diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
    index ba41fdeaaf98..b67c9b137447 100644
    --- a/lib/dynamic_debug.c
    +++ b/lib/dynamic_debug.c
    @@ -708,18 +708,9 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
    return 0;
    }

    -/**
    - * param_set_dyndbg_classes - class FOO >control
    - * @instr: string echo>d to sysfs, input depends on map_type
    - * @kp: kp->arg has state: bits/lvl, map, map_type
    - *
    - * Enable/disable prdbgs by their class, as given in the arguments to
    - * DECLARE_DYNDBG_CLASSMAP. For LEVEL map-types, enforce relative
    - * levels by bitpos.
    - *
    - * Returns: 0 or <0 if error.
    - */
    -int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
    +static int param_set_dyndbg_module_classes(const char *instr,
    + const struct kernel_param *kp,
    + const char *modnm)
    {
    const struct ddebug_class_param *dcp = kp->arg;
    const struct ddebug_class_map *map = dcp->map;
    @@ -756,8 +747,8 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
    KP_NAME(kp), inrep, CLASSMAP_BITMASK(map->length));
    inrep &= CLASSMAP_BITMASK(map->length);
    }
    - v2pr_info("bits:%lx > %s\n", inrep, KP_NAME(kp));
    - totct += ddebug_apply_class_bitmap(dcp, &inrep, dcp->bits, NULL);
    + v2pr_info("bits:0x%lx > %s.%s\n", inrep, modnm ?: "*", KP_NAME(kp));
    + totct += ddebug_apply_class_bitmap(dcp, &inrep, dcp->bits, modnm);
    *dcp->bits = inrep;
    break;
    case DD_CLASS_TYPE_LEVEL_NUM:
    @@ -770,7 +761,7 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
    old_bits = CLASSMAP_BITMASK(*dcp->lvl);
    new_bits = CLASSMAP_BITMASK(inrep);
    v2pr_info("lvl:%ld bits:0x%lx > %s\n", inrep, new_bits, KP_NAME(kp));
    - totct += ddebug_apply_class_bitmap(dcp, &new_bits, &old_bits, NULL);
    + totct += ddebug_apply_class_bitmap(dcp, &new_bits, &old_bits, modnm);
    *dcp->lvl = inrep;
    break;
    default:
    @@ -779,6 +770,22 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
    vpr_info("%s: total matches: %d\n", KP_NAME(kp), totct);
    return 0;
    }
    +
    +/**
    + * param_set_dyndbg_classes - class FOO >control
    + * @instr: string echo>d to sysfs, input depends on map_type
    + * @kp: kp->arg has state: bits/lvl, map, map_type
    + *
    + * Enable/disable prdbgs by their class, as given in the arguments to
    + * DECLARE_DYNDBG_CLASSMAP. For LEVEL map-types, enforce relative
    + * levels by bitpos.
    + *
    + * Returns: 0 or <0 if error.
    + */
    +int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
    +{
    + return param_set_dyndbg_module_classes(instr, kp, NULL);
    +}
    EXPORT_SYMBOL(param_set_dyndbg_classes);

    /**
    --
    2.41.0
    \
     
     \ /
      Last update: 2023-10-12 19:23    [W:4.457 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site