Changeset 78d50bd in mainline for uspace/lib/label/src/label.c


Ignore:
Timestamp:
2015-06-29T18:47:07Z (10 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3faa03d
Parents:
28ed0d9
Message:

Implement partition block device interface in VBD based on data from liblabel.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/label/src/label.c

    r28ed0d9 r78d50bd  
    3434 */
    3535
     36#include <adt/list.h>
    3637#include <errno.h>
    3738#include <label.h>
     
    4748                return ENOMEM;
    4849
     50        list_initialize(&label->parts);
    4951        *rlabel = label;
    5052        return EOK;
     
    5961                return ENOMEM;
    6062
     63        list_initialize(&label->parts);
    6164        *rlabel = label;
    6265        return EOK;
     
    6568void label_close(label_t *label)
    6669{
     70        if (label == NULL)
     71                return;
     72
    6773        free(label);
    6874}
     
    8389label_part_t *label_part_first(label_t *label)
    8490{
    85         return NULL;
     91        link_t *link;
     92
     93        link = list_first(&label->parts);
     94        if (link == NULL)
     95                return NULL;
     96
     97        return list_get_instance(link, label_part_t, llabel);
    8698}
    8799
    88 label_part_t *label_part_next(label_part_t *oart)
     100label_part_t *label_part_next(label_part_t *part)
    89101{
    90         return NULL;
     102        link_t *link;
     103
     104        link = list_next(&part->llabel, &part->label->parts);
     105        if (link == NULL)
     106                return NULL;
     107
     108        return list_get_instance(link, label_part_t, llabel);
    91109}
    92110
     111void label_part_get_info(label_part_t *part, label_part_info_t *pinfo)
     112{
     113        pinfo->block0 = 0;
     114        pinfo->nblocks = 0;
     115}
    93116
    94117int label_part_create(label_t *label, label_part_spec_t *pspec,
    95118    label_part_t **rpart)
    96119{
    97         return ENOTSUP;
     120        label_part_t *part;
     121
     122        part = calloc(1, sizeof(label_part_t));
     123        if (part == NULL)
     124                return ENOMEM;
     125
     126        part->label = label;
     127        list_append(&part->llabel, &label->parts);
     128        *rpart = part;
     129        return EOK;
    98130}
    99131
    100132int label_part_destroy(label_part_t *part)
    101133{
     134        list_remove(&part->llabel);
     135        free(part);
    102136        return EOK;
    103137}
Note: See TracChangeset for help on using the changeset viewer.