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}.