ACK: [PATCH] kernelscan: add -k option to specify klog json filename

ivanhu ivan.hu at canonical.com
Thu Sep 27 03:06:38 UTC 2018



On 09/19/2018 03:43 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> This allows one to specify the location of the klog json file. Currently
> this is hard coded to be /usr/share/fwts/klog.json, but this new option
> allows one to specify the full path. This allows us to use the json file
> in the fwts src rather than the installed version.
>
> E.g.
>
> ./kernelscan.sh -k ~/repos/fwts/data/klog.json  ~/repos/linux
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/utilities/kernelscan.c  | 29 ++++++++++++++++++++++++++---
>  src/utilities/kernelscan.sh | 33 +++++++++++++++++++++++++++++----
>  2 files changed, 55 insertions(+), 7 deletions(-)
>
> diff --git a/src/utilities/kernelscan.c b/src/utilities/kernelscan.c
> index 1974f53a..c1655fe4 100644
> --- a/src/utilities/kernelscan.c
> +++ b/src/utilities/kernelscan.c
> @@ -191,6 +191,8 @@ static char *funcs[] = {
>  
>  #define TABLE_SIZE	(5000)
>  
> +static char *klog_file = DATAROOTDIR "/fwts/klog.json";
> +
>  static char *hash_funcs[TABLE_SIZE];
>  
>  static int get_token(parser *p, token *t);
> @@ -348,7 +350,7 @@ static klog_pattern *klog_load(const char *table)
>  	json_object *klog_table;
>  	klog_pattern *patterns;
>  
> -	klog_objs = json_object_from_file(DATAROOTDIR "/fwts/klog.json");
> +	klog_objs = json_object_from_file(klog_file);
>  	if (JSON_ERROR(klog_objs)) {
>  		fprintf(stderr, "Cannot load klog data\n");
>  		exit(EXIT_FAILURE);
> @@ -1015,6 +1017,13 @@ static void hash_init(void)
>  	}
>  }
>  
> +void help(void)
> +{
> +	printf("kernelscan:\n");
> +	printf("-h\t\thelp\n");
> +	printf("-k file\t\tspecify klog json file\n");
> +}
> +
>  /*
>   *  Scan kernel source for printk KERN_ERR and dev_err
>   *  calls.
> @@ -1030,8 +1039,22 @@ static void hash_init(void)
>   */
>  int main(int argc, char **argv)
>  {
> -	(void)argc;
> -	(void)argv;
> +	for (;;) {
> +		int c = getopt(argc, argv, "hk:");
> +		if (c == -1)
> +			break;
> +		switch (c) {
> +		case 'h':
> +			help();
> +			exit(0);
> +		case 'k':
> +			klog_file = optarg;
> +			break;
> +		default:
> +			help();
> +			exit(1);
> +		}
> +	}
>  
>  	patterns = klog_load("firmware_error_warning_patterns");
>  	hash_init();
> diff --git a/src/utilities/kernelscan.sh b/src/utilities/kernelscan.sh
> index 7b274959..61207662 100755
> --- a/src/utilities/kernelscan.sh
> +++ b/src/utilities/kernelscan.sh
> @@ -32,17 +32,42 @@ if [ $# -lt 1 ]; then
>  	exit 1
>  fi
>  
> -src=$1
> +KLOG=/usr/share/fwts/klog.json
>  
> -if [ ! -d  $1 ]; then
> -	echo "Path '$1' not found"
> +while [[ $# -gt 0 ]]
> +do
> +
> +case "$1" in
> +	-k)
> +		shift
> +		KLOG=$1
> +		shift
> +		;;
> +	*)
> +		src=$1
> +		shift
> +		;;
> +esac
> +done
> +
> +if [ "$src" == "" ]; then
> +	echo "Please provide path to linux source"
> +	exit 1
> +fi
> +
> +if [ ! -d "$src" ]; then
> +	echo "Path '$src' not found"
> +	exit 1
> +fi
> +if [ ! -e "${KLOG}" ]; then
> +	echo "Path '${KLOG}' not found"
>  	exit 1
>  fi
>  
>  scan_source_file()
>  {
>  	if [ -f $1 ]; then
> -		$KERNELSCAN -P < $1 > $TMP
> +		$KERNELSCAN -k ${KLOG} < $1 > $TMP
>  		if [ $(stat -c%s $TMP) -gt 0 ]; then
>  			echo "Source: $1"
>  			cat $TMP

Acked-by: Ivan Hu <ivan.hu at canonical.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20180927/fd90d0c4/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20180927/fd90d0c4/attachment.sig>


More information about the fwts-devel mailing list