* grub-core/kern/emu/hostdisk.c: Disentagle into a series of OS-specific

files rather than one file with loads of #if's.
	* util/getroot.c: Likewise.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2013-09-22 07:36:17 +02:00
parent 287faafe8d
commit 3ff4063dd3
30 changed files with 4039 additions and 2364 deletions

View file

@ -19,6 +19,8 @@
#ifndef GRUB_UTIL_GETROOT_HEADER
#define GRUB_UTIL_GETROOT_HEADER 1
#include <grub/types.h>
#include <sys/types.h>
enum grub_dev_abstraction_types {
@ -30,12 +32,13 @@ enum grub_dev_abstraction_types {
};
char *grub_find_device (const char *dir, dev_t dev);
void grub_util_pull_device (const char *osname);
char **grub_guess_root_devices (const char *dir);
int grub_util_get_dev_abstraction (const char *os_dev);
char *grub_util_get_grub_dev (const char *os_dev);
char *grub_make_system_path_relative_to_its_root (const char *path);
const char *grub_util_check_block_device (const char *blk_dev);
const char *grub_util_check_char_device (const char *blk_dev);
char *grub_util_get_grub_dev (const char *os_dev);
#ifdef __linux__
char **grub_util_raid_getmembers (const char *name, int bootable);
#endif
@ -44,4 +47,57 @@ void grub_util_follow_gpart_up (const char *name, grub_disk_addr_t *off_out,
char **name_out);
#endif
#include <sys/stat.h>
#ifdef __linux__
char **
grub_find_root_devices_from_mountinfo (const char *dir, char **relroot);
#endif
#if defined (__GNU__)
char *
grub_util_find_hurd_root_device (const char *path);
#endif
/* Devmapper functions provided by getroot_devmapper.c. */
void
grub_util_pull_devmapper (const char *os_dev);
int
grub_util_device_is_mapped_stat (struct stat *st);
void grub_util_devmapper_cleanup (void);
enum grub_dev_abstraction_types
grub_util_get_dm_abstraction (const char *os_dev);
char *
grub_util_get_vg_uuid (const char *os_dev);
char *
grub_util_devmapper_part_to_disk (struct stat *st,
int *is_part, const char *os_dev);
char *
grub_util_get_devmapper_grub_dev (const char *os_dev);
/* Functions provided by getroot.c. */
#if !defined (__MINGW32__) && !defined (__CYGWIN__) && !defined (__GNU__)
#include <sys/types.h>
pid_t
grub_util_exec_pipe (char **argv, int *fd);
#endif
char **
grub_util_find_root_devices_from_poolname (char *poolname);
grub_disk_addr_t
grub_util_find_partition_start (const char *dev);
/* OS-specific functions provided by getroot_*.c. */
enum grub_dev_abstraction_types
grub_util_get_dev_abstraction_os (const char *os_dev);
char *
grub_util_part_to_disk (const char *os_dev, struct stat *st,
int *is_part);
int
grub_util_pull_device_os (const char *osname,
enum grub_dev_abstraction_types ab);
char *
grub_util_get_grub_dev_os (const char *os_dev);
grub_disk_addr_t
grub_util_find_partition_start_os (const char *dev);
#endif /* ! GRUB_UTIL_GETROOT_HEADER */

View file

@ -33,7 +33,6 @@ int grub_util_biosdisk_is_floppy (grub_disk_t disk);
const char *
grub_util_biosdisk_get_compatibility_hint (grub_disk_t disk);
grub_err_t grub_util_biosdisk_flush (struct grub_disk *disk);
void grub_util_pull_device (const char *osname);
grub_err_t
grub_util_fd_seek (int fd, const char *name, grub_uint64_t sector);
ssize_t grub_util_fd_read (int fd, char *buf, size_t len);
@ -52,8 +51,6 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
grub_embed_type_t embed_type,
grub_disk_addr_t **sectors);
#endif
grub_disk_addr_t
grub_hostdisk_find_partition_start (const char *dev);
const char *
grub_hostdisk_os_dev_to_grub_drive (const char *os_dev, int add);
@ -63,11 +60,45 @@ grub_util_get_fd_size (int fd, const char *name, unsigned *log_secsize);
char *
grub_util_get_os_disk (const char *os_dev);
#ifdef HAVE_DEVICE_MAPPER
#ifdef __linux__
int
grub_hostdisk_linux_find_partition (char *dev, grub_disk_addr_t sector);
#endif
int
grub_util_get_dm_node_linear_info (const char *dev,
int *maj, int *min,
grub_disk_addr_t *st);
/* Supplied by hostdisk_*.c. */
grub_int64_t
grub_util_get_fd_size_os (int fd, const char *name, unsigned *log_secsize);
/* REturns partition offset in 512B blocks. */
grub_disk_addr_t
grub_hostdisk_find_partition_start_os (const char *dev);
/* Adjust device driver parameters. This function should be called just
after successfully opening the device. For now, it simply prevents the
floppy driver from retrying operations on failure, as otherwise the
driver takes a while to abort when there is no floppy in the drive.
For now it's non-nop only on NetBSD.
*/
void
grub_hostdisk_configure_device_driver (int fd);
void
grub_hostdisk_flush_initial_buffer (const char *os_dev);
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__APPLE__) || defined(__NetBSD__) || defined (__sun__) || defined(__OpenBSD__)
#define GRUB_DISK_DEVS_ARE_CHAR 1
#else
#define GRUB_DISK_DEVS_ARE_CHAR 0
#endif
#ifdef __GNU__
int
grub_util_hurd_get_disk_info (const char *dev, grub_uint32_t *secsize,
grub_disk_addr_t *offset,
grub_disk_addr_t *size, char **parent);
#endif
#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */

View file

@ -20,14 +20,10 @@
#ifndef GRUB_LVM_UTIL_HEADER
#define GRUB_LVM_UTIL_HEADER 1
#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#ifdef __linux__
#define LVM_DEV_MAPPER_STRING "/dev/mapper/"
#else
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define LVM_DEV_MAPPER_STRING "/dev/linux_lvm/"
#endif
#else
#define LVM_DEV_MAPPER_STRING "/dev/mapper/"
#endif
#endif /* ! GRUB_RAID_UTIL_HEADER */