2016-12-04 23 views
10

В настоящее время я использую Simics module (см. Главу 6) для прослушивания извлечений команд и доступа к данным и выполнения обратных вызовов во всех этих событиях, чтобы обработать ядро, которое работает Simics x86. Например, я могу создать модуль Simics следующим образом:Генерирование вызовов функций при доступе к данным в VMware ESXi

/* Initialize our Simics module. */ 
void init_local(void) 
{ 
    const class_data_t funcs = { 
     .new_instance = ls_new_instance, 
     .class_desc = "desc", 
     .description = "A simics module." 
    }; 

    /* Register the empty device class. */ 
    conf_class_t *conf_class = SIM_register_class(SIM_MODULE_NAME, &funcs); 

    /* Register our class class as a trace consumer. */ 
    static const trace_consume_interface_t trace_int = { 
     .consume = (void (*)(conf_object_t *, trace_entry_t *))my_tool_entrypoint 
    }; 
    SIM_register_interface(conf_class, TRACE_CONSUME_INTERFACE, &trace_int); 
} 

Делая это, Simics будет вызывать my_tool_entrypoint на каждой команды и каждого доступа к данным; позволяя мне управлять ядром, с которым я работаю, как я считаю нужным. Излишне говорить, что это очень крутая и очень мощная функция.

Мои вопросы:

  1. ли такая функция доступна для программ, работающих на VMware ESXi (или VMware Workstation) гипервизора? Если да, то где документация для этой функции?
  2. Если он недоступен в ESXi, доступен ли он на любых других гипервизорах, таких как Xen?

Обратите внимание, что я НЕ с вопросом, как запустить Simics над/под VMware, Xen, Bochs и т.д. Я прошу, если это возможно/как запустить функцию обратного вызова на инструкции извлечения и доступа к памяти (как Я показал, что это возможно с Simics) на другой платформе, такой как VMware, Xen, Bochs, Qemu и т. Д.

ответ

1

Похоже, вы хотите использовать «vProbes». vProbes позволяют вам динамически обрабатывать любую инструкцию или доступ к данным в гостевой ОС, а затем сценарии обратного вызова. (не уверен, что вы слышали о «Dtrace» для Solaris, но это похоже) Я использовал его для отслеживания вызовов функций внутри планировщика Linux, например. Сценарии должны быть написаны на языке C, называемом Emmett. Эта статья хорошо читала о технологии и возможно: https://labs.vmware.com/vmtj/vprobes-deep-observability-into-the-esxi-hypervisor

Также приведена ссылка на справочное руководство для рабочих станций и систем Fusion. Кажется немного старым, но я не думаю, что он сильно изменился. (BTW, он работает на ESXi, а также на рабочей станции и Fusion) http://www.vmware.com/pdf/ws7_f3_vprobes_reference.pdf

 Смежные вопросы

  • Нет связанных вопросов^_^