287 /* Reset vcpu register state */
288 int vcpu_reset(struct vmctx *ctx, int vcpu);
289
290 int vm_active_cpus(struct vmctx *ctx, cpuset_t *cpus);
291 int vm_suspended_cpus(struct vmctx *ctx, cpuset_t *cpus);
292 int vm_debug_cpus(struct vmctx *ctx, cpuset_t *cpus);
293 int vm_activate_cpu(struct vmctx *ctx, int vcpu);
294 int vm_suspend_cpu(struct vmctx *ctx, int vcpu);
295 int vm_resume_cpu(struct vmctx *ctx, int vcpu);
296
297 /* CPU topology */
298 int vm_set_topology(struct vmctx *ctx, uint16_t sockets, uint16_t cores,
299 uint16_t threads, uint16_t maxcpus);
300 int vm_get_topology(struct vmctx *ctx, uint16_t *sockets, uint16_t *cores,
301 uint16_t *threads, uint16_t *maxcpus);
302
303 #ifndef __FreeBSD__
304 /* illumos-specific APIs */
305 int vm_pmtmr_set_location(struct vmctx *ctx, uint16_t ioport);
306 int vm_wrlock_cycle(struct vmctx *ctx);
307 #endif /* __FreeBSD__ */
308
309 #ifdef __FreeBSD__
310 /*
311 * FreeBSD specific APIs
312 */
313 int vm_setup_freebsd_registers(struct vmctx *ctx, int vcpu,
314 uint64_t rip, uint64_t cr3, uint64_t gdtbase,
315 uint64_t rsp);
316 int vm_setup_freebsd_registers_i386(struct vmctx *vmctx, int vcpu,
317 uint32_t eip, uint32_t gdtbase,
318 uint32_t esp);
319 void vm_setup_freebsd_gdt(uint64_t *gdtr);
320 #endif
321 #endif /* _VMMAPI_H_ */
|
287 /* Reset vcpu register state */
288 int vcpu_reset(struct vmctx *ctx, int vcpu);
289
290 int vm_active_cpus(struct vmctx *ctx, cpuset_t *cpus);
291 int vm_suspended_cpus(struct vmctx *ctx, cpuset_t *cpus);
292 int vm_debug_cpus(struct vmctx *ctx, cpuset_t *cpus);
293 int vm_activate_cpu(struct vmctx *ctx, int vcpu);
294 int vm_suspend_cpu(struct vmctx *ctx, int vcpu);
295 int vm_resume_cpu(struct vmctx *ctx, int vcpu);
296
297 /* CPU topology */
298 int vm_set_topology(struct vmctx *ctx, uint16_t sockets, uint16_t cores,
299 uint16_t threads, uint16_t maxcpus);
300 int vm_get_topology(struct vmctx *ctx, uint16_t *sockets, uint16_t *cores,
301 uint16_t *threads, uint16_t *maxcpus);
302
303 #ifndef __FreeBSD__
304 /* illumos-specific APIs */
305 int vm_pmtmr_set_location(struct vmctx *ctx, uint16_t ioport);
306 int vm_wrlock_cycle(struct vmctx *ctx);
307 int vm_get_run_state(struct vmctx *ctx, int vcpu, enum vcpu_run_state *state,
308 uint8_t *sipi_vector);
309 int vm_set_run_state(struct vmctx *ctx, int vcpu, enum vcpu_run_state state,
310 uint8_t sipi_vector);
311 #endif /* __FreeBSD__ */
312
313 #ifdef __FreeBSD__
314 /*
315 * FreeBSD specific APIs
316 */
317 int vm_setup_freebsd_registers(struct vmctx *ctx, int vcpu,
318 uint64_t rip, uint64_t cr3, uint64_t gdtbase,
319 uint64_t rsp);
320 int vm_setup_freebsd_registers_i386(struct vmctx *vmctx, int vcpu,
321 uint32_t eip, uint32_t gdtbase,
322 uint32_t esp);
323 void vm_setup_freebsd_gdt(uint64_t *gdtr);
324 #endif
325 #endif /* _VMMAPI_H_ */
|