qemu

Форк
0
/
block-helpers.c 
46 строк · 1.3 Кб
1
/*
2
 * Block utility functions
3
 *
4
 * Copyright IBM, Corp. 2011
5
 * Copyright (c) 2020 Coiby Xu <coiby.xu@gmail.com>
6
 *
7
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
8
 * See the COPYING file in the top-level directory.
9
 */
10

11
#include "qemu/osdep.h"
12
#include "qapi/error.h"
13
#include "qapi/qmp/qerror.h"
14
#include "block-helpers.h"
15

16
/**
17
 * check_block_size:
18
 * @id: The unique ID of the object
19
 * @name: The name of the property being validated
20
 * @value: The block size in bytes
21
 * @errp: A pointer to an area to store an error
22
 *
23
 * This function checks that the block size meets the following conditions:
24
 * 1. At least MIN_BLOCK_SIZE
25
 * 2. No larger than MAX_BLOCK_SIZE
26
 * 3. A power of 2
27
 */
28
void check_block_size(const char *id, const char *name, int64_t value,
29
                      Error **errp)
30
{
31
    /* value of 0 means "unset" */
32
    if (value && (value < MIN_BLOCK_SIZE || value > MAX_BLOCK_SIZE)) {
33
        error_setg(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE,
34
                   id, name, value, MIN_BLOCK_SIZE, MAX_BLOCK_SIZE);
35
        return;
36
    }
37

38
    /* We rely on power-of-2 blocksizes for bitmasks */
39
    if ((value & (value - 1)) != 0) {
40
        error_setg(errp,
41
                   "Property %s.%s doesn't take value '%" PRId64
42
                   "', it's not a power of 2",
43
                   id, name, value);
44
        return;
45
    }
46
}
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.