66 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Architecture specific debugfs files | ||
|  |  * | ||
|  |  * Copyright (C) 2007, Intel Corp. | ||
|  |  *	Huang Ying <ying.huang@intel.com> | ||
|  |  * | ||
|  |  * This file is released under the GPLv2. | ||
|  |  */ | ||
|  | 
 | ||
|  | #include <linux/debugfs.h>
 | ||
|  | #include <linux/stat.h>
 | ||
|  | #include <linux/init.h>
 | ||
|  | 
 | ||
|  | #include <asm/setup.h>
 | ||
|  | 
 | ||
|  | #ifdef CONFIG_DEBUG_BOOT_PARAMS
 | ||
|  | static struct debugfs_blob_wrapper boot_params_blob = { | ||
|  | 	.data = &boot_params, | ||
|  | 	.size = sizeof(boot_params), | ||
|  | }; | ||
|  | 
 | ||
|  | static int __init boot_params_kdebugfs_init(void) | ||
|  | { | ||
|  | 	int error; | ||
|  | 	struct dentry *dbp, *version, *data; | ||
|  | 
 | ||
|  | 	dbp = debugfs_create_dir("boot_params", NULL); | ||
|  | 	if (!dbp) { | ||
|  | 		error = -ENOMEM; | ||
|  | 		goto err_return; | ||
|  | 	} | ||
|  | 	version = debugfs_create_x16("version", S_IRUGO, dbp, | ||
|  | 				     &boot_params.hdr.version); | ||
|  | 	if (!version) { | ||
|  | 		error = -ENOMEM; | ||
|  | 		goto err_dir; | ||
|  | 	} | ||
|  | 	data = debugfs_create_blob("data", S_IRUGO, dbp, | ||
|  | 				   &boot_params_blob); | ||
|  | 	if (!data) { | ||
|  | 		error = -ENOMEM; | ||
|  | 		goto err_version; | ||
|  | 	} | ||
|  | 	return 0; | ||
|  | err_version: | ||
|  | 	debugfs_remove(version); | ||
|  | err_dir: | ||
|  | 	debugfs_remove(dbp); | ||
|  | err_return: | ||
|  | 	return error; | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | static int __init arch_kdebugfs_init(void) | ||
|  | { | ||
|  | 	int error = 0; | ||
|  | 
 | ||
|  | #ifdef CONFIG_DEBUG_BOOT_PARAMS
 | ||
|  | 	error = boot_params_kdebugfs_init(); | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 	return error; | ||
|  | } | ||
|  | 
 | ||
|  | arch_initcall(arch_kdebugfs_init); |