On Thu, Jun 09, 2016 at 06:27:41PM +0000, Conrad E. Meyer wrote:
> Author: cem
> Date: Thu Jun  9 18:27:41 2016
> New Revision: 301751
> URL: https://svnweb.freebsd.org/changeset/base/301751
> 
> Log:
>   Add DDB command "kldstat"
>   
>   It prints much the same information as kldstat(8) without any arguments.
>   
>   Suggested by:       jhibbits
>   Sponsored by:       EMC / Isilon Storage Division
> 
> Modified:
>   head/sys/kern/kern_linker.c
> 
> Modified: head/sys/kern/kern_linker.c
> ==============================================================================
> --- head/sys/kern/kern_linker.c       Thu Jun  9 18:24:51 2016        
> (r301750)
> +++ head/sys/kern/kern_linker.c       Thu Jun  9 18:27:41 2016        
> (r301751)
> @@ -54,6 +54,10 @@ __FBSDID("$FreeBSD$");
>  #include <sys/syscallsubr.h>
>  #include <sys/sysctl.h>
>  
> +#ifdef DDB
> +#include <ddb/ddb.h>
> +#endif
> +
>  #include <net/vnet.h>
>  
>  #include <security/mac/mac_framework.h>
> @@ -1256,6 +1260,23 @@ kern_kldstat(struct thread *td, int file
>       return (0);
>  }
>  
> +#ifdef DDB
> +DB_COMMAND(kldstat, db_kldstat)
This would arguably more visible if done as the 'show klds' or similar
subcommand. The first place where people accustomed to ddb look when
want to see some kernel structures dumped, is 'show'.

BTW, a useful tradition is to have 'show kld <addr>' and 'show klds'
commands. If not clear from the structure, the first command would print
the information about single linker file at the given address (whatever
it is), and second does what your current 'kldstat' offer.


> +{
> +     linker_file_t lf;
> +
> +#define      POINTER_WIDTH   ((int)(sizeof(void *) * 2 + 2))
> +     db_printf("Id Refs Address%*c Size     Name\n", POINTER_WIDTH - 7, ' ');
> +#undef       POINTER_WIDTH
> +     TAILQ_FOREACH(lf, &linker_files, link) {
> +             if (db_pager_quit)
> +                     return;
> +             db_printf("%2d %4d %p %-8zx %s\n", lf->id, lf->refs,
> +                 lf->address, lf->size, lf->filename);
> +     }
> +}
> +#endif /* DDB */
> +
>  int
>  sys_kldfirstmod(struct thread *td, struct kldfirstmod_args *uap)
>  {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to