efi_loader: output load options in helloworld
We need to test if we pass a valid image handle when loading and EFI application. This cannot be done in efi_selftest as it is not loaded as an image. So let's enhance helloworld a bit. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									c51e7df941
								
							
						
					
					
						commit
						bbf75dd934
					
				|  | @ -5,19 +5,52 @@ | ||||||
|  * Written by Simon Glass <sjg@chromium.org> |  * Written by Simon Glass <sjg@chromium.org> | ||||||
|  * |  * | ||||||
|  * SPDX-License-Identifier:     GPL-2.0+ |  * SPDX-License-Identifier:     GPL-2.0+ | ||||||
|  |  * | ||||||
|  |  * This program demonstrates calling a boottime service. | ||||||
|  |  * It writes a greeting and the load options to the console. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <common.h> | #include <common.h> | ||||||
| #include <efi_api.h> | #include <efi_api.h> | ||||||
| 
 | 
 | ||||||
|  | /*
 | ||||||
|  |  * Entry point of the EFI application. | ||||||
|  |  * | ||||||
|  |  * @handle	handle of the loaded image | ||||||
|  |  * @systable	system table | ||||||
|  |  * @return	status code | ||||||
|  |  */ | ||||||
| efi_status_t EFIAPI efi_main(efi_handle_t handle, | efi_status_t EFIAPI efi_main(efi_handle_t handle, | ||||||
| 			     struct efi_system_table *systable) | 			     struct efi_system_table *systable) | ||||||
| { | { | ||||||
| 	struct efi_simple_text_output_protocol *con_out = systable->con_out; | 	struct efi_simple_text_output_protocol *con_out = systable->con_out; | ||||||
| 	struct efi_boot_services *boottime = systable->boottime; | 	struct efi_boot_services *boottime = systable->boottime; | ||||||
|  | 	struct efi_loaded_image *loaded_image; | ||||||
|  | 	const efi_guid_t loaded_image_guid = LOADED_IMAGE_GUID; | ||||||
|  | 	efi_status_t ret; | ||||||
| 
 | 
 | ||||||
| 	con_out->output_string(con_out, L"Hello, world!\n"); | 	con_out->output_string(con_out, L"Hello, world!\n"); | ||||||
| 	boottime->exit(handle, 0, 0, NULL); |  | ||||||
| 
 | 
 | ||||||
| 	return EFI_SUCCESS; | 	/* Get the loaded image protocol */ | ||||||
|  | 	ret = boottime->handle_protocol(handle, &loaded_image_guid, | ||||||
|  | 					(void **)&loaded_image); | ||||||
|  | 	if (ret != EFI_SUCCESS) { | ||||||
|  | 		con_out->output_string(con_out, | ||||||
|  | 				       L"Cannot open loaded image protocol\n"); | ||||||
|  | 		goto out; | ||||||
|  | 	} | ||||||
|  | 	/* Output the load options */ | ||||||
|  | 	con_out->output_string(con_out, L"Load options: "); | ||||||
|  | 	if (loaded_image->load_options_size && loaded_image->load_options) | ||||||
|  | 		con_out->output_string(con_out, | ||||||
|  | 				       (u16 *)loaded_image->load_options); | ||||||
|  | 	else | ||||||
|  | 		con_out->output_string(con_out, L"<none>"); | ||||||
|  | 	con_out->output_string(con_out, L"\n"); | ||||||
|  | 
 | ||||||
|  | out: | ||||||
|  | 	boottime->exit(handle, ret, 0, NULL); | ||||||
|  | 
 | ||||||
|  | 	/* We should never arrive here */ | ||||||
|  | 	return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue