put_u16_masked(struct ds *s, uint16_t value, uint16_t mask)
{
    if (!mask) {
        ds_put_char(s, '*');
    } else {
        if (value > 9) {
            ds_put_format(s, "0x%"PRIx16, value);
        } else {
            ds_put_format(s, "%"PRIu16, value);
        }

        if (mask != UINT16_MAX) {
            ds_put_format(s, "/0x%"PRIx16, mask);
        }
    }
}
put_u16_masked(struct ds *s, uint16_t value, uint16_t mask)
{
    if (!mask) {
        ds_put_char(s, '*');
    } else {
        if (value > 9) {
            ds_put_format(s, "0x%"PRIx16, value);
        } else {
            ds_put_format(s, "%"PRIu16, value);
        }

        if (mask != UINT16_MAX) {
            ds_put_format(s, "/0x%"PRIx16, mask);
        }
    }
}