On 9/10/09, Andreas Robinson <[email protected]> wrote:
> On Thu, 2009-09-10 at 09:21 -0400, Jon Masters wrote:
>> On Thu, 2009-09-10 at 14:19 +0200, Kay Sievers wrote:
>> > On Thu, Sep 10, 2009 at 14:11, Michal Marek <[email protected]> wrote:
>> > > Andreas Robinson napsal(a):
>>
>> > > My current /lib/modules/`uname -r`/modules.builtin is 129 lines, I'm
>> > > not
>> > > sure I want to see additional 129 lines each time I run lsmod. What
>> > > about some 'lsmod --show-builtin' ?
>> >
>> > Oh well, before we moved all to built-in in the kernel the list was
>> > that long as well. I think "grep is your friend" and we should not
>> > care and just print it. The less difference between built-in and
>> > module the better.
>>
>> I concur. I think you can grep or pass through a pager easy enough.
>>
>> Jon.
>>
>>
>
> A compromise? List the builtins first?
>
> >From bf7242f46c54f2db32fded00af098ec6d872d7d0 Mon Sep 17 00:00:00 2001
> From: Andreas Robinson <[email protected]>
> Date: Thu, 10 Sep 2009 15:13:20 +0200
> Subject: [PATCH] lsmod: print built-in modules
>
>
> Signed-off-by: Andreas Robinson <[email protected]>
> ---
>  lsmod.c |   25 ++++++++++++++++++++++++-
>  1 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/lsmod.c b/lsmod.c
> index 1fd2ec4..80401b4 100644
> --- a/lsmod.c
> +++ b/lsmod.c
> @@ -26,6 +26,8 @@
>  #include <errno.h>
>  #include <ctype.h>
>  #include <asm/unistd.h>
> +#include <limits.h>
> +#include <sys/utsname.h>
>
>  #include "testing.h"
>
> @@ -37,19 +39,40 @@ static void print_usage(const char *progname)
>
>  int main(int argc, char *argv[])
>  {
> +     char fname[PATH_MAX];
>       char line[4096];
>       FILE *file;
> +     struct utsname buf;
>
>       if (argc != 1)
>               print_usage("lsmod");
>
> +     printf("Module                  Size  Used by\n");
> +
> +     uname(&buf);
> +     snprintf(fname, sizeof(fname), "/lib/modules/%s/modules.builtin",
> +             buf.release);

This would be simpler using asprintf_nofail().  Also, you need to take
"modprobe -b /dir" and "modprobe -s kernel-version" into account.

> +     file = fopen(fname, "r");
> +     while (file && fgets(line, sizeof(line), file)) {
> +             char *modname, *ext;
> +
> +             modname = strrchr(line, '/');
> +             if (modname) {
> +                     ext = strrchr(modname, '.');
> +                     if (ext)
> +                             *ext = '\0';

filename2modname() ?

> +                     printf("%-19s        -  - [builtin]\n", modname+1);
> +             }
> +     }
> +     if (file)
> +             fclose(file);
> +
>       file = fopen("/proc/modules", "r");
>       if (!file) {
>               perror("Opening /proc/modules");
>               exit(1);
>       }
>
> -     printf("Module                  Size  Used by\n");
>       while (fgets(line, sizeof(line), file)) {
>               char *tok;

Thanks
Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-modules" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to