Changeset e47a032 in mainline for uspace/lib


Ignore:
Timestamp:
2024-10-28T20:02:39Z (12 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
9fc1d36d
Parents:
066fed9
Message:

hr: base for status handling

Location:
uspace/lib/device
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/device/include/hr.h

    r066fed9 re47a032  
    5454} hr_level_t;
    5555
     56typedef enum hr_vol_status {
     57        HR_VOL_ONLINE,  /* OK, OPTIMAL */
     58        HR_VOL_FAULTY
     59} hr_vol_status_t;
     60
     61typedef enum hr_ext_status {
     62        HR_EXT_ONLINE,  /* OK */
     63        HR_EXT_MISSING,
     64        HR_EXT_FAILED
     65} hr_ext_status_t;
     66
    5667typedef struct hr {
    5768        async_sess_t *sess;
     
    6778typedef struct hr_extent {
    6879        service_id_t svc_id;
    69         int status;
     80        hr_ext_status_t status;
    7081} hr_extent_t;
    7182
     
    7889        uint32_t strip_size;
    7990        size_t bsize;
     91        hr_vol_status_t status;
    8092} hr_vol_info_t;
    8193
     
    8799extern errno_t hr_print_status(void);
    88100
     101extern const char *hr_get_vol_status_msg(hr_vol_status_t);
     102extern const char *hr_get_ext_status_msg(hr_ext_status_t);
     103
    89104#endif
    90105
  • uspace/lib/device/src/hr.c

    r066fed9 re47a032  
    130130        printf("devname: %s\n", devname);
    131131
     132        printf("status: %s\n", hr_get_vol_status_msg(vol_info->status));
     133
    132134        printf("level: %d\n", vol_info->level);
    133135        if (vol_info->level == HR_LVL_0 || vol_info->level == HR_LVL_4) {
     
    150152        for (i = 0; i < vol_info->extent_no; i++) {
    151153                ext = &vol_info->extents[i];
    152                 rc = loc_service_get_name(ext->svc_id, &devname);
    153                 if (rc != EOK)
    154                         return rc;
     154                if (ext->status == HR_EXT_MISSING) {
     155                        devname = (char *) "MISSING-devname";
     156                } else {
     157                        rc = loc_service_get_name(ext->svc_id, &devname);
     158                        if (rc != EOK)
     159                                return rc;
     160                }
    155161                if (i == 0 && vol_info->level == HR_LVL_4)
    156                         printf("          P   %d        %zu       %s\n", ext->status, i, devname);
     162                        printf("          P   %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
    157163                else if (vol_info->level == HR_LVL_4)
    158                         printf("              %d        %zu       %s\n", ext->status, i, devname);
     164                        printf("              %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
    159165                else
    160                         printf("          %d        %zu       %s\n", ext->status, i, devname);
     166                        printf("          %s    %zu       %s\n", hr_get_ext_status_msg(ext->status), i, devname);
    161167        }
    162168        return EOK;
     
    262268}
    263269
     270const char *hr_get_vol_status_msg(hr_vol_status_t status)
     271{
     272        switch (status) {
     273        case HR_VOL_ONLINE:
     274                return "ONLINE";
     275        case HR_VOL_FAULTY:
     276                return "FAULTY";
     277        default:
     278                return "UNKNOWN";
     279        }
     280}
     281
     282const char *hr_get_ext_status_msg(hr_ext_status_t status)
     283{
     284        switch (status) {
     285        case HR_EXT_ONLINE:
     286                return "ONLINE";
     287        case HR_EXT_MISSING:
     288                return "MISSING";
     289        case HR_EXT_FAILED:
     290                return "FAILED";
     291        default:
     292                return "UNKNOWN";
     293        }
     294}
     295
    264296/** @}
    265297 */
Note: See TracChangeset for help on using the changeset viewer.