ieee1275: split up grub_machine_get_bootlocation
Split up some of the functionality in grub_machine_get_bootlocation into grub_ieee1275_get_boot_dev. This will allow for code reuse in a follow on patch. Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
		
							parent
							
								
									b59db4f484
								
							
						
					
					
						commit
						b0beba9f20
					
				
					 3 changed files with 31 additions and 18 deletions
				
			
		|  | @ -94,28 +94,12 @@ void | ||||||
| grub_machine_get_bootlocation (char **device, char **path) | grub_machine_get_bootlocation (char **device, char **path) | ||||||
| { | { | ||||||
|   char *bootpath; |   char *bootpath; | ||||||
|   grub_ssize_t bootpath_size; |  | ||||||
|   char *filename; |   char *filename; | ||||||
|   char *type; |   char *type; | ||||||
| 
 | 
 | ||||||
|   if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath", |   bootpath = grub_ieee1275_get_boot_dev (); | ||||||
| 					 &bootpath_size) |  | ||||||
|       || bootpath_size <= 0) |  | ||||||
|     { |  | ||||||
|       /* Should never happen.  */ |  | ||||||
|       grub_printf ("/chosen/bootpath property missing!\n"); |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|   bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64); |  | ||||||
|   if (! bootpath) |   if (! bootpath) | ||||||
|     { |  | ||||||
|       grub_print_error (); |  | ||||||
|     return; |     return; | ||||||
|     } |  | ||||||
|   grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath, |  | ||||||
|                               (grub_size_t) bootpath_size + 1, 0); |  | ||||||
|   bootpath[bootpath_size] = '\0'; |  | ||||||
| 
 | 
 | ||||||
|   /* Transform an OF device path to a GRUB path.  */ |   /* Transform an OF device path to a GRUB path.  */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -561,3 +561,30 @@ grub_ieee1275_canonicalise_devname (const char *path) | ||||||
|   return NULL; |   return NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | char * | ||||||
|  | grub_ieee1275_get_boot_dev (void) | ||||||
|  | { | ||||||
|  |   char *bootpath; | ||||||
|  |   grub_ssize_t bootpath_size; | ||||||
|  | 
 | ||||||
|  |   if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath", | ||||||
|  | 					 &bootpath_size) | ||||||
|  |       || bootpath_size <= 0) | ||||||
|  |     { | ||||||
|  |       /* Should never happen. */ | ||||||
|  |       grub_printf ("/chosen/bootpath property missing!\n"); | ||||||
|  |       return NULL; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |   bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64); | ||||||
|  |   if (! bootpath) | ||||||
|  |     { | ||||||
|  |       grub_print_error (); | ||||||
|  |       return NULL; | ||||||
|  |     } | ||||||
|  |   grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath, | ||||||
|  |                               (grub_size_t) bootpath_size + 1, 0); | ||||||
|  |   bootpath[bootpath_size] = '\0'; | ||||||
|  | 
 | ||||||
|  |   return bootpath; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -253,6 +253,8 @@ void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *al | ||||||
| void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, | void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath, | ||||||
| 						struct grub_ieee1275_devalias *alias); | 						struct grub_ieee1275_devalias *alias); | ||||||
| 
 | 
 | ||||||
|  | char *EXPORT_FUNC(grub_ieee1275_get_boot_dev) (void); | ||||||
|  | 
 | ||||||
| #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) | #define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));) | ||||||
| 
 | 
 | ||||||
| #define FOR_IEEE1275_DEVCHILDREN(devpath, alias) for (grub_ieee1275_children_first ((devpath), &(alias)); \ | #define FOR_IEEE1275_DEVCHILDREN(devpath, alias) for (grub_ieee1275_children_first ((devpath), &(alias)); \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue