dynamic_debug: print ram usage by ddebug tables if verbose
authorJim Cromie <jim.cromie@gmail.com>
Fri, 27 Apr 2012 20:30:39 +0000 (14:30 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Apr 2012 20:25:39 +0000 (16:25 -0400)
Print ram usage of dynamic-debug tables and verbose section so user
knows cost of enabling CONFIG_DYNAMIC_DEBUG.  This only counts the
size of the _ddebug tables for builtins and the __verbose section that
they refer to, not those used in loadable modules.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Acked-by: Jason Baron <jbaron@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
lib/dynamic_debug.c

index 66e0ec4d21f7ad0367a5d7f40e86d299a5901fd3..76da6aa66ce7938499e69cf7b0c726dfd3ecd4a9 100644 (file)
@@ -970,7 +970,8 @@ static int __init dynamic_debug_init(void)
        const char *modname = NULL;
        char *cmdline;
        int ret = 0;
-       int n = 0;
+       int n = 0, entries = 0, modct = 0;
+       int verbose_bytes = 0;
 
        if (__start___verbose == __stop___verbose) {
                pr_warn("_ddebug table is empty in a "
@@ -981,7 +982,12 @@ static int __init dynamic_debug_init(void)
        modname = iter->modname;
        iter_start = iter;
        for (; iter < __stop___verbose; iter++) {
+               entries++;
+               verbose_bytes += strlen(iter->modname) + strlen(iter->function)
+                       + strlen(iter->filename) + strlen(iter->format);
+
                if (strcmp(modname, iter->modname)) {
+                       modct++;
                        ret = ddebug_add_module(iter_start, n, modname);
                        if (ret)
                                goto out_err;
@@ -996,6 +1002,10 @@ static int __init dynamic_debug_init(void)
                goto out_err;
 
        ddebug_init_success = 1;
+       vpr_info("%d modules, %d entries and %d bytes in ddebug tables,"
+               " %d bytes in (readonly) verbose section\n",
+               modct, entries, (int)( modct * sizeof(struct ddebug_table)),
+               verbose_bytes + (int)(__stop___verbose - __start___verbose));
 
        /* apply ddebug_query boot param, dont unload tables on err */
        if (ddebug_setup_string[0] != '\0') {