Changeset 9c2c7d2 in mainline for uspace/lib/c


Ignore:
Timestamp:
2017-07-06T15:52:15Z (8 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5cd1eb9a
Parents:
d858a660
Message:

Fdisk should be able to set volume label for newly created partitions.

Location:
uspace/lib/c
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/vol.c

    rd858a660 r9c2c7d2  
    3939#include <loc.h>
    4040#include <stdlib.h>
     41#include <str.h>
    4142#include <vol.h>
    4243
     
    251252}
    252253
     254/** Get volume label support. */
     255int vol_part_get_lsupp(vol_t *vol, vol_fstype_t fstype,
     256    vol_label_supp_t *vlsupp)
     257{
     258        async_exch_t *exch;
     259        sysarg_t retval;
     260        ipc_call_t answer;
     261
     262        exch = async_exchange_begin(vol->sess);
     263        aid_t req = async_send_1(exch, VOL_PART_LSUPP, fstype, &answer);
     264        int rc = async_data_read_start(exch, vlsupp, sizeof(vol_label_supp_t));
     265        async_exchange_end(exch);
     266
     267        if (rc != EOK) {
     268                async_forget(req);
     269                return EIO;
     270        }
     271
     272        async_wait_for(req, &retval);
     273        if (retval != EOK)
     274                return EIO;
     275
     276        return EOK;
     277}
     278
    253279/** Create file system. */
    254 int vol_part_mkfs(vol_t *vol, service_id_t sid, vol_fstype_t fstype)
    255 {
    256         async_exch_t *exch;
    257         int retval;
    258 
    259         exch = async_exchange_begin(vol->sess);
    260         retval = async_req_2_0(exch, VOL_PART_MKFS, sid, fstype);
    261         async_exchange_end(exch);
     280int vol_part_mkfs(vol_t *vol, service_id_t sid, vol_fstype_t fstype,
     281    const char *label)
     282{
     283        async_exch_t *exch;
     284        ipc_call_t answer;
     285        sysarg_t retval;
     286
     287        exch = async_exchange_begin(vol->sess);
     288        aid_t req = async_send_2(exch, VOL_PART_MKFS, sid, fstype, &answer);
     289        retval = async_data_write_start(exch, label, str_size(label));
     290        async_exchange_end(exch);
     291
     292        if (retval != EOK) {
     293                async_forget(req);
     294                return retval;
     295        }
     296
     297        async_wait_for(req, &retval);
    262298
    263299        if (retval != EOK)
  • uspace/lib/c/include/ipc/vol.h

    rd858a660 r9c2c7d2  
    4343        VOL_PART_INFO,
    4444        VOL_PART_EMPTY,
    45         VOL_PART_MKFS
     45        VOL_PART_LSUPP,
     46        VOL_PART_MKFS,
    4647} vol_request_t;
    4748
  • uspace/lib/c/include/types/vol.h

    rd858a660 r9c2c7d2  
    3838#include <async.h>
    3939#include <ipc/vol.h>
     40#include <stdbool.h>
    4041
    4142typedef enum {
     
    7677} vol_part_info_t;
    7778
     79/** Volume label support */
     80typedef struct {
     81        /** Volume labels are supported */
     82        bool supported;
     83} vol_label_supp_t;
     84
    7885#endif
    7986
  • uspace/lib/c/include/vol.h

    rd858a660 r9c2c7d2  
    4848extern int vol_part_info(vol_t *, service_id_t, vol_part_info_t *);
    4949extern int vol_part_empty(vol_t *, service_id_t);
    50 extern int vol_part_mkfs(vol_t *, service_id_t, vol_fstype_t);
     50extern int vol_part_get_lsupp(vol_t *, vol_fstype_t, vol_label_supp_t *);
     51extern int vol_part_mkfs(vol_t *, service_id_t, vol_fstype_t, const char *);
    5152
    5253#endif
Note: See TracChangeset for help on using the changeset viewer.