Changeset 22fb7ab in mainline for uspace/lib/fdisk/src/fdisk.c
- Timestamp:
- 2015-06-26T16:15:31Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 28ed0d9
- Parents:
- 1356f85a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/fdisk/src/fdisk.c
r1356f85a r22fb7ab 43 43 #include <stdlib.h> 44 44 #include <str.h> 45 #include <vol.h> 45 46 46 47 static const char *cu_str[] = { … … 68 69 } 69 70 70 int fdisk_dev_list_get(fdisk_dev_list_t **rdevlist) 71 int fdisk_create(fdisk_t **rfdisk) 72 { 73 fdisk_t *fdisk; 74 int rc; 75 76 fdisk = calloc(1, sizeof(fdisk_t)); 77 if (fdisk == NULL) 78 return ENOMEM; 79 80 rc = vol_create(&fdisk->vol); 81 if (rc != EOK) { 82 free(fdisk); 83 return EIO; 84 } 85 86 *rfdisk = fdisk; 87 return EOK; 88 } 89 90 void fdisk_destroy(fdisk_t *fdisk) 91 { 92 vol_destroy(fdisk->vol); 93 free(fdisk); 94 } 95 96 int fdisk_dev_list_get(fdisk_t *fdisk, fdisk_dev_list_t **rdevlist) 71 97 { 72 98 fdisk_dev_list_t *devlist = NULL; 73 99 fdisk_dev_info_t *info; 74 category_id_t disk_cat;75 100 service_id_t *svcs = NULL; 76 101 size_t count, i; … … 83 108 list_initialize(&devlist->devinfos); 84 109 85 rc = loc_category_get_id("disk", &disk_cat, 0); 86 if (rc != EOK) { 87 rc = EIO; 88 goto error; 89 } 90 91 rc = loc_category_get_svcs(disk_cat, &svcs, &count); 110 rc = vol_get_disks(fdisk->vol, &svcs, &count); 92 111 if (rc != EOK) { 93 112 rc = EIO; … … 210 229 } 211 230 212 int fdisk_dev_open( service_id_t sid, fdisk_dev_t **rdev)231 int fdisk_dev_open(fdisk_t *fdisk, service_id_t sid, fdisk_dev_t **rdev) 213 232 { 214 233 fdisk_dev_t *dev; … … 218 237 return ENOMEM; 219 238 220 dev-> ltype = fdl_none;239 dev->fdisk = fdisk; 221 240 dev->sid = sid; 222 241 list_initialize(&dev->parts); … … 271 290 int fdisk_label_get_info(fdisk_dev_t *dev, fdisk_label_info_t *info) 272 291 { 273 info->ltype = dev->ltype; 274 return EOK; 275 } 276 277 int fdisk_label_create(fdisk_dev_t *dev, fdisk_label_type_t ltype) 278 { 279 if (dev->ltype != fdl_none) 280 return EEXISTS; 281 282 dev->ltype = ltype; 283 return EOK; 292 vol_disk_info_t vinfo; 293 int rc; 294 295 rc = vol_disk_info(dev->fdisk->vol, dev->sid, &vinfo); 296 if (rc != EOK) { 297 rc = EIO; 298 goto error; 299 } 300 301 info->dcnt = vinfo.dcnt; 302 info->ltype = vinfo.ltype; 303 return EOK; 304 error: 305 return rc; 306 } 307 308 int fdisk_label_create(fdisk_dev_t *dev, label_type_t ltype) 309 { 310 return vol_label_create(dev->fdisk->vol, dev->sid, ltype); 284 311 } 285 312 … … 287 314 { 288 315 fdisk_part_t *part; 289 290 if (dev->ltype == fdl_none) 291 return ENOENT; 316 int rc; 292 317 293 318 part = fdisk_part_first(dev); … … 297 322 } 298 323 299 dev->ltype = fdl_none; 324 rc = vol_disk_empty(dev->fdisk->vol, dev->sid); 325 if (rc != EOK) 326 return EIO; 327 328 dev->dcnt = dc_empty; 300 329 return EOK; 301 330 } … … 419 448 } 420 449 421 int fdisk_ltype_format( fdisk_label_type_t ltype, char **rstr)450 int fdisk_ltype_format(label_type_t ltype, char **rstr) 422 451 { 423 452 const char *sltype; … … 426 455 sltype = NULL; 427 456 switch (ltype) { 428 case fdl_none: 429 sltype = "None"; 430 break; 431 case fdl_unknown: 432 sltype = "Unknown"; 433 break; 434 case fdl_mbr: 457 case lt_mbr: 435 458 sltype = "MBR"; 436 459 break; 437 case fdl_gpt:460 case lt_gpt: 438 461 sltype = "GPT"; 439 462 break;
Note:
See TracChangeset
for help on using the changeset viewer.