Changeset 22fb7ab in mainline for uspace/lib
- Timestamp:
- 2015-06-26T16:15:31Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 28ed0d9
- Parents:
- 1356f85a
- Location:
- uspace/lib
- Files:
-
- 7 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/Makefile
r1356f85a r22fb7ab 153 153 generic/stats.c \ 154 154 generic/assert.c \ 155 generic/pio_trace.c 155 generic/pio_trace.c \ 156 generic/vbd.c \ 157 generic/vol.c 156 158 157 159 ifeq ($(CONFIG_RTLD),y) -
uspace/lib/fdisk/include/fdisk.h
r1356f85a r22fb7ab 40 40 #include <types/fdisk.h> 41 41 42 extern int fdisk_dev_list_get(fdisk_dev_list_t **); 42 extern int fdisk_create(fdisk_t **); 43 extern void fdisk_destroy(fdisk_t *); 44 extern int fdisk_dev_list_get(fdisk_t *, fdisk_dev_list_t **); 43 45 extern void fdisk_dev_list_free(fdisk_dev_list_t *); 44 46 extern fdisk_dev_info_t *fdisk_dev_first(fdisk_dev_list_t *); … … 48 50 extern int fdisk_dev_info_capacity(fdisk_dev_info_t *, fdisk_cap_t *); 49 51 50 extern int fdisk_dev_open( service_id_t, fdisk_dev_t **);52 extern int fdisk_dev_open(fdisk_t *, service_id_t, fdisk_dev_t **); 51 53 extern void fdisk_dev_close(fdisk_dev_t *); 52 54 extern int fdisk_dev_get_svcname(fdisk_dev_t *, char **); … … 54 56 55 57 extern int fdisk_label_get_info(fdisk_dev_t *, fdisk_label_info_t *); 56 extern int fdisk_label_create(fdisk_dev_t *, fdisk_label_type_t);58 extern int fdisk_label_create(fdisk_dev_t *, label_type_t); 57 59 extern int fdisk_label_destroy(fdisk_dev_t *); 58 60 … … 68 70 extern int fdisk_cap_format(fdisk_cap_t *, char **); 69 71 extern int fdisk_cap_parse(const char *, fdisk_cap_t *); 70 extern int fdisk_ltype_format( fdisk_label_type_t, char **);72 extern int fdisk_ltype_format(label_type_t, char **); 71 73 extern int fdisk_fstype_format(fdisk_fstype_t, char **); 72 74 -
uspace/lib/fdisk/include/types/fdisk.h
r1356f85a r22fb7ab 40 40 #include <loc.h> 41 41 #include <stdint.h> 42 #include <types/label.h> 43 #include <vol.h> 42 44 43 45 typedef enum { … … 95 97 } fdisk_dev_info_t; 96 98 97 /** Fdisk label type */98 typedef enum {99 /** None */100 fdl_none = 0,101 /** Unknown */102 fdl_unknown,103 /** BIOS Master Boot Record */104 fdl_mbr,105 /** UEFI GUID Partition Table */106 fdl_gpt107 } fdisk_label_type_t;108 109 /** Highest label type + 1 */110 #define FDL_LIMIT (fdl_gpt + 1)111 /** Lowest label type allowed for creation */112 #define FDL_CREATE_LO fdl_mbr113 /** Highest label type allowed for creation + 1 */114 #define FDL_CREATE_HI (fdl_gpt + 1)115 116 99 /** Open fdisk device */ 117 100 typedef struct { 118 /** Label type */ 119 fdisk_label_type_t ltype; 101 /** Fdisk instance */ 102 struct fdisk *fdisk; 103 /** Disk contents */ 104 label_disk_cnt_t dcnt; 105 /** Service ID */ 106 service_id_t sid; 120 107 /** Partitions */ 121 108 list_t parts; /* of fdisk_part_t */ 122 /** Service ID */123 service_id_t sid;124 109 } fdisk_dev_t; 125 110 126 111 typedef struct { 112 /** Disk contents */ 113 label_disk_cnt_t dcnt; 127 114 /** Label type */ 128 fdisk_label_type_t ltype;115 label_type_t ltype; 129 116 } fdisk_label_info_t; 130 117 … … 156 143 } fdisk_part_info_t; 157 144 145 /** Fdisk instance */ 146 typedef struct fdisk { 147 /** Volume service */ 148 vol_t *vol; 149 } fdisk_t; 150 158 151 #endif 159 152 -
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.