diff options
Diffstat (limited to 'include/grub/emu/hostdisk.h')
-rw-r--r-- | include/grub/emu/hostdisk.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/include/grub/emu/hostdisk.h b/include/grub/emu/hostdisk.h new file mode 100644 index 0000000..e006f0b --- /dev/null +++ b/include/grub/emu/hostdisk.h @@ -0,0 +1,98 @@ +/* biosdisk.h - emulate biosdisk */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2002,2007 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER +#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1 + +#include <grub/disk.h> +#include <grub/partition.h> +#include <sys/types.h> +#include <grub/emu/hostfile.h> + +grub_util_fd_t +grub_util_fd_open_device (const grub_disk_t disk, grub_disk_addr_t sector, int flags, + grub_disk_addr_t *max); + +void grub_util_biosdisk_init (const char *dev_map); +void grub_util_biosdisk_fini (void); +char *grub_util_biosdisk_get_grub_dev (const char *os_dev); +const char *grub_util_biosdisk_get_osdev (grub_disk_t disk); +int grub_util_biosdisk_is_present (const char *name); +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); +grub_err_t +grub_cryptodisk_cheat_mount (const char *sourcedev, const char *cheat); +const char * +grub_util_cryptodisk_get_uuid (grub_disk_t disk); +char * +grub_util_get_ldm (grub_disk_t disk, grub_disk_addr_t start); +int +grub_util_is_ldm (grub_disk_t disk); +#ifdef GRUB_UTIL +grub_err_t +grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors, + unsigned int max_nsectors, + grub_embed_type_t embed_type, + grub_disk_addr_t **sectors); +#endif +const char * +grub_hostdisk_os_dev_to_grub_drive (const char *os_dev, int add); + + +char * +grub_util_get_os_disk (const char *os_dev); + +int +grub_util_get_dm_node_linear_info (dev_t dev, + int *maj, int *min, + grub_disk_addr_t *st); + + +/* Supplied by hostdisk_*.c. */ +grub_int64_t +grub_util_get_fd_size_os (grub_util_fd_t 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); +void +grub_hostdisk_flush_initial_buffer (const char *os_dev); + +#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 + +struct grub_util_hostdisk_data +{ + char *dev; + int access_mode; + grub_util_fd_t fd; + int is_disk; + int device_map; +}; + +void grub_host_init (void); +void grub_host_fini (void); +void grub_hostfs_init (void); +void grub_hostfs_fini (void); + +#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */ |