Changeset 1c8bfe8 in mainline for uspace/lib/gpt/libgpt.h


Ignore:
Timestamp:
2013-06-25T00:27:47Z (11 years ago)
Author:
Dominik Taborsky (AT DOT) <brembyseznamcz>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6317b33, 9256d093
Parents:
6e8e4e19 (diff), cb328ab (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

GPT updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/gpt/libgpt.h

    r6e8e4e19 r1c8bfe8  
    5353#define GPT_IGNORE_FILL_NUM 10
    5454
     55/** Unused partition entry */
     56#define GPT_PTE_UNUSED 0
     57
    5558/** GPT header signature ("EFI PART" in ASCII) */
    5659extern const uint8_t efi_signature[8];
     
    8689typedef struct {
    8790        /** Raw header. Has more bytes alloced than sizeof(gpt_header_t)!
    88          * See gpt_read_gpt_header() to know why. */
    89         gpt_header_t * raw_data;
    90         /** Device where the data are from */
    91         service_id_t device;
    92         /** Linked list of partitions (initially NULL) */
     91         * See gpt_alloc_header() to know why. */
     92        gpt_header_t *header;
    9393} gpt_t;
    9494
     
    123123        size_t arr_size;
    124124        /** Resizable partition array */
    125         gpt_entry_t * part_array;
     125        gpt_entry_t *part_array;
    126126} gpt_partitions_t;
    127127
    128128
    129129typedef struct gpt_table {
    130         gpt_t * gpt;
    131         gpt_partitions_t * parts;
     130        gpt_t *gpt;
     131        gpt_partitions_t *parts;
     132        service_id_t device;
    132133} gpt_label_t;
    133134
    134135struct partition_type {
    135         const char * desc;
    136         const char * guid;
     136        const char *desc;
     137        const char *guid;
    137138};
    138139
    139140extern const struct partition_type gpt_ptypes[];
    140141
     142extern gpt_label_t * gpt_alloc_label(void);
     143extern void gpt_free_label(gpt_label_t *);
    141144
    142 extern gpt_t * gpt_alloc_gpt_header(void);
    143 extern gpt_t * gpt_read_gpt_header(service_id_t dev_handle);
    144 extern int     gpt_write_gpt_header(gpt_t * header, service_id_t dev_handle);
     145extern gpt_t * gpt_alloc_header(size_t);
     146extern int     gpt_read_header(gpt_label_t *, service_id_t);
     147extern int     gpt_write_header(gpt_label_t *, service_id_t);
    145148
    146149extern gpt_partitions_t * gpt_alloc_partitions(void);
    147 extern gpt_partitions_t * gpt_read_partitions(gpt_t * gpt);
    148 extern int             gpt_write_partitions(gpt_partitions_t * parts, gpt_t * header, service_id_t dev_handle);
    149 extern gpt_part_t *    gpt_alloc_partition (gpt_partitions_t * parts);
    150 extern int             gpt_add_partition   (gpt_partitions_t * parts, gpt_part_t * partition);
    151 extern int             gpt_remove_partition(gpt_partitions_t * parts, size_t idx);
     150extern int             gpt_read_partitions (gpt_label_t *);
     151extern int             gpt_write_partitions(gpt_label_t *, service_id_t);
     152extern gpt_part_t *    gpt_alloc_partition (void);
     153extern gpt_part_t *    gpt_get_partition   (gpt_label_t *);
     154extern gpt_part_t *    gpt_get_partition_at(gpt_label_t *, size_t);
     155extern int             gpt_add_partition   (gpt_label_t *, gpt_part_t *);
     156extern int             gpt_remove_partition(gpt_label_t *, size_t);
    152157
    153 extern size_t          gpt_get_part_type(gpt_part_t * p);
    154 extern void            gpt_set_part_type(gpt_part_t * p, size_t type);
    155 extern void            gpt_set_start_lba(gpt_part_t * p, uint64_t start);
    156 extern uint64_t        gpt_get_start_lba(gpt_part_t * p);
    157 extern void            gpt_set_end_lba  (gpt_part_t * p, uint64_t end);
    158 extern uint64_t        gpt_get_end_lba  (gpt_part_t * p);
    159 extern unsigned char * gpt_get_part_name(gpt_part_t * p);
    160 extern void            gpt_set_part_name(gpt_part_t * p, char * name[], size_t length);
    161 extern bool            gpt_get_flag     (gpt_part_t * p, GPT_ATTR flag);
    162 extern void            gpt_set_flag     (gpt_part_t * p, GPT_ATTR flag, bool value);
     158extern size_t          gpt_get_part_type(gpt_part_t *);
     159extern void            gpt_set_part_type(gpt_part_t *, size_t);
     160extern void            gpt_set_start_lba(gpt_part_t *, uint64_t);
     161extern uint64_t        gpt_get_start_lba(gpt_part_t *);
     162extern void            gpt_set_end_lba  (gpt_part_t *, uint64_t);
     163extern uint64_t        gpt_get_end_lba  (gpt_part_t *);
     164extern unsigned char * gpt_get_part_name(gpt_part_t *);
     165extern void            gpt_set_part_name(gpt_part_t *, char *, size_t);
     166extern bool            gpt_get_flag     (gpt_part_t *, GPT_ATTR);
     167extern void            gpt_set_flag     (gpt_part_t *, GPT_ATTR, bool);
    163168
    164169
    165170
    166 #define gpt_part_foreach(parts, iterator) \
    167                 for(gpt_part_t * iterator = (parts)->part_array; \
    168                     iterator < (parts)->part_array + (parts)->fill; ++iterator)
     171#define gpt_part_foreach(label, iterator) \
     172                for(gpt_part_t * iterator = (label)->parts->part_array; \
     173                    iterator < (label)->parts->part_array + (label)->parts->fill; ++iterator)
    169174
    170 extern void gpt_free_gpt(gpt_t * gpt);
    171 extern void gpt_free_partitions(gpt_partitions_t * parts);
     175extern void gpt_free_gpt(gpt_t *);
     176extern void gpt_free_partitions(gpt_partitions_t *);
    172177
    173178#endif
Note: See TracChangeset for help on using the changeset viewer.