svn commit: r301751 - head/sys/kern

Konstantin Belousov kostikbel at gmail.com
Fri Jun 10 03:08:44 UTC 2016


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)
>  {


More information about the svn-src-head mailing list