diff options
author | Karel Zak | 2015-06-11 14:19:47 +0200 |
---|---|---|
committer | Karel Zak | 2015-06-11 14:19:47 +0200 |
commit | 5989556ad3dca8246f245eaf0867e89fb6fc9362 (patch) | |
tree | af5c8a841b82853044a3c9a9625a3c97738375a9 /libfdisk/src/libfdisk.h.in | |
parent | libfdisk: (dos) fix cylinders calculation (diff) | |
download | kernel-qcow2-util-linux-5989556ad3dca8246f245eaf0867e89fb6fc9362.tar.gz kernel-qcow2-util-linux-5989556ad3dca8246f245eaf0867e89fb6fc9362.tar.xz kernel-qcow2-util-linux-5989556ad3dca8246f245eaf0867e89fb6fc9362.zip |
libfdisk: add new API to read label specific data
* removes list() label operation from internal API
The list() has been based on fdisk_info() it was useless for
anything else than print on stdout...
* add a new get_item() label operation and fdisk_get_disklabel_item() public API
The new API provides abstract and pretty simple way how to get label
specific disk label information, for example
fdisk_get_disklabel_item(cxt, GPT_LABELITEM_ENTRIESLBA, &iterm);
return LBA of the array with GPT entries.
Note that this patch does not implement public functions to get
data from the @item object.
* removes get_id() label operation -- it's subset of the new get_item()
* the new internal API is also used to implement backwardly compatible
fdisk_list_disklabel() and fdisk_get_disklabel_id()
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk/src/libfdisk.h.in')
-rw-r--r-- | libfdisk/src/libfdisk.h.in | 70 |
1 files changed, 68 insertions, 2 deletions
diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in index bfb22a2f7..ba6539e23 100644 --- a/libfdisk/src/libfdisk.h.in +++ b/libfdisk/src/libfdisk.h.in @@ -99,7 +99,7 @@ struct fdisk_field; /** * fdisk_script * - * library handler for sfdisk compatible scripts + * library handler for sfdisk compatible scripts and dumps */ struct fdisk_script; @@ -124,6 +124,14 @@ enum fdisk_labeltype { }; /** + * fdisk_labelitem + * + * library handler for label specific information. See + * generic FDISK_LABELITEM_* and label specific {GPT,MBR,..}_LABELITEM_*. + */ +struct fdisk_labelitem; + +/** * fdisk_asktype: * * Ask API dialog types @@ -140,6 +148,7 @@ enum fdisk_asktype { FDISK_ASKTYPE_MENU }; + /* init.c */ extern void fdisk_init_debug(int mask); @@ -246,7 +255,7 @@ int fdisk_parttype_is_unknown(const struct fdisk_parttype *t); /** * fdisk_fieldtype * - * Types of fdisk_field + * Types of fdisk_field. The fields describe a partition. */ enum fdisk_fieldtype { FDISK_FIELD_NONE = 0, @@ -289,6 +298,18 @@ extern int fdisk_locate_disklabel(struct fdisk_context *cxt, int n, uint64_t *offset, size_t *size); +/** + * fdisk_labelitem_gen + * + * Generic disklabel items + */ +enum fdisk_labelitem_gen { + FDISK_LABELITEM_ID = 0, /* Unique disk identifier */ + + __FDISK_NLABELITEMS = 8 /* Specifies reserved range for generic items (0..7) */ +}; + +extern int fdisk_get_disklabel_item(struct fdisk_context *cxt, int id, struct fdisk_labelitem *item); extern int fdisk_get_disklabel_id(struct fdisk_context *cxt, char **id); extern int fdisk_set_disklabel_id(struct fdisk_context *cxt); @@ -477,17 +498,52 @@ extern int fdisk_sun_set_ilfact(struct fdisk_context *cxt); extern int fdisk_sun_set_rspeed(struct fdisk_context *cxt); extern int fdisk_sun_set_pcylcount(struct fdisk_context *cxt); +enum fdisk_labelitem_sun { + SUN_LABELITEM_LABELID = __FDISK_NLABELITEMS, + SUN_LABELITEM_VTOCID, + SUN_LABELITEM_RPM, + SUN_LABELITEM_ACYL, + SUN_LABELITEM_PCYL, + SUN_LABELITEM_APC, + SUN_LABELITEM_INTRLV +}; + /* bsd.c */ extern int fdisk_bsd_edit_disklabel(struct fdisk_context *cxt); extern int fdisk_bsd_write_bootstrap(struct fdisk_context *cxt); extern int fdisk_bsd_link_partition(struct fdisk_context *cxt); +enum fdisk_labelitem_bsd { + /* specific */ + BSD_LABELITEM_TYPE = __FDISK_NLABELITEMS, + BSD_LABELITEM_DISK, + BSD_LABELITEM_PACKNAME, + BSD_LABELITEM_FLAGS, + BSD_LABELITEM_SECSIZE, + BSD_LABELITEM_NTRACKS, + BSD_LABELITEM_SECPERCYL, + BSD_LABELITEM_CYLINDERS, + BSD_LABELITEM_RPM, + BSD_LABELITEM_INTERLEAVE, + BSD_LABELITEM_TRACKSKEW, + BSD_LABELITEM_CYLINDERSKEW, + BSD_LABELITEM_HEADSWITCH, + BSD_LABELITEM_TRKSEEK +}; + /* sgi.h */ #define SGI_FLAG_BOOT 1 #define SGI_FLAG_SWAP 2 extern int fdisk_sgi_set_bootfile(struct fdisk_context *cxt); extern int fdisk_sgi_create_info(struct fdisk_context *cxt); +enum fdisk_labelitem_sgi { + SGI_LABELITEM_PCYLCOUNT = __FDISK_NLABELITEMS, + SGI_LABELITEM_SPARECYL, + SGI_LABELITEM_ILFACT, + SGI_LABELITEM_BOOTFILE +}; + /* gpt */ /* @@ -539,6 +595,16 @@ extern int fdisk_gpt_is_hybrid(struct fdisk_context *cxt); extern int fdisk_gpt_get_partition_attrs(struct fdisk_context *cxt, size_t partnum, uint64_t *attrs); extern int fdisk_gpt_set_partition_attrs(struct fdisk_context *cxt, size_t partnum, uint64_t attrs); +enum fdisk_labelitem_gpt { + /* generic */ + GPT_LABELITEM_ID = FDISK_LABELITEM_ID, /* GPT disklabel UUID (!= partition UUID) */ + /* specific */ + GPT_LABELITEM_FIRSTLBA = __FDISK_NLABELITEMS, /* First Usable LBA */ + GPT_LABELITEM_LASTLBA, /* Last Usable LBA */ + GPT_LABELITEM_ALTLBA, /* Alternative LBA (backup header LBA) */ + GPT_LABELITEM_ENTRIESLBA, /* Partitions entires array LBA */ + GPT_LABELITEM_ENTRIESALLOC /* Number of allocated entries in entries array */ +}; /* script.c */ struct fdisk_script *fdisk_new_script(struct fdisk_context *cxt); |