HV_VP_SET

Виртуальный набор процессоров представляет коллекцию виртуальных процессоров и может использоваться в качестве входных данных для некоторых гипервызовов.

Синтаксис

typedef struct
{
    UINT64 Format;
    UINT64 ValidBanksMask;
    UINT64 BankContents[];
} HV_VP_SET;

Набор процессоров имеет два режима, которые указываются в поле Формат. Наборы процессоров с форматом "1" представляют все виртуальные процессоры для данного раздела. Наборы процессоров с форматом "0" описывают разреженный набор виртуальных процессоров.

Значение формата Настройка поведения
0 Разреженное подмножество ВПС
1 Все ВПС (входящие в секцию)

Набор разреженных виртуальных процессоров

В следующем разделе описывается создание разреженного набора виртуальных процессоров.

Общий набор виртуальных процессоров разбивается на фрагменты 64, называемые "банком". Например, процессоры 0-63 находятся в банке 0, 64-127 — в банке 1 и т. д.

Чтобы описать отдельный процессор, его банк указывается с помощью Валидбанксмаск. Каждый бит в Валидбанксмаск представляет конкретный банк.

bank = VPindex / 64

Для каждого бита, установленного с помощью Валидбанксмаск, в массиве Банксконтентс должен быть элемент. Этот элемент представляет собой маску, описывающую сам банк.

Если бит в Валидбанкмаск имеет значение 0, соответствующий элемент в Банксконтентс отсутствует. Кроме того, для бита 1 в Валидбанкмаск допустимое состояние для соответствующего элемента в Банксконтентс может быть равно всем 0, то есть в этом банке процессоры не указаны.

Пример набора процессоров

Предположим, что Секция имеет 200 ВПС, и нам нужно указать следующий набор: {0, 5130}

Во-первых, формат равен 0, так как это разреженный набор. Затем соответствующие банки (и, следовательно, набор Валидбанксмаск) имеют значение {0, 0, 2}. Таким же Валидбанксмаск — 0x05.

Bank 0 задает биты 0 и 5 для указания ВПС в пределах этого банка. Таким образом, соответствующий элемент в маске Банкконтентс — это 0x21.

Поскольку бит 1 не задан в Валидбанксмаск, соответствующий элемент в Банкконтентс отсутствует. Банк 2 представляет индексы президента 128-191. Чтобы описать индекс 130, задается бит 2 соответствующей маски. Таким образом, Банкконтентс имеет следующее: {0x21, 0x04}.