Skip to content

Commit 97eebfb

Browse files
committed
add support for nested virtualization
Signed-off-by: Abiola Ibrahim <[email protected]>
1 parent c319894 commit 97eebfb

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

Diff for: platform.go

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package vz
66
# include "virtualization_11.h"
77
# include "virtualization_12.h"
88
# include "virtualization_13.h"
9+
# include "virtualization_15.h"
910
*/
1011
import "C"
1112
import (
@@ -40,6 +41,14 @@ func (m *GenericPlatformConfiguration) MachineIdentifier() *GenericMachineIdenti
4041
return m.machineIdentifier
4142
}
4243

44+
// SetNestedVirtualizationEnabled toggles nested virtualization.
45+
func (m *GenericPlatformConfiguration) SetNestedVirtualizationEnabled(enable bool) {
46+
C.setNestedVirtualizationEnabled(
47+
objc.Ptr(m),
48+
C.bool(enable),
49+
)
50+
}
51+
4352
var _ PlatformConfiguration = (*GenericPlatformConfiguration)(nil)
4453

4554
// NewGenericPlatformConfiguration creates a new generic platform configuration.

Diff for: virtualization_15.h

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//
2+
// virtualization_15.h
3+
4+
#pragma once
5+
6+
#import "virtualization_helper.h"
7+
#import <Virtualization/Virtualization.h>
8+
9+
/* macOS 15 API */
10+
void setNestedVirtualizationEnabled(void *config, bool nestedVirtualizationEnabled);

Diff for: virtualization_15.m

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// virtualization_15.m
3+
//
4+
#import "virtualization_15.h"
5+
6+
/*!
7+
@abstract Set nestedVirtualizationEnabled. The default is false.
8+
*/
9+
void setNestedVirtualizationEnabled(void *config, bool nestedVirtualizationEnabled)
10+
{
11+
#ifdef INCLUDE_TARGET_OSX_15
12+
if (@available(macOS 15, *)) {
13+
VZGenericPlatformConfiguration *platformConfig = (VZGenericPlatformConfiguration *)config;
14+
if (VZGenericPlatformConfiguration.isNestedVirtualizationSupported) {
15+
platformConfig.nestedVirtualizationEnabled = (BOOL) nestedVirtualizationEnabled;
16+
}
17+
return;
18+
}
19+
#endif
20+
RAISE_UNSUPPORTED_MACOS_EXCEPTION();
21+
}

Diff for: virtualization_helper.h

+7
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ NSDictionary *dumpProcessinfo();
3939
#pragma message("macOS 14 API has been disabled")
4040
#endif
4141

42+
// for macOS 15 API
43+
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 150000
44+
#define INCLUDE_TARGET_OSX_15 1
45+
#else
46+
#pragma message("macOS 15 API has been disabled")
47+
#endif
48+
4249
static inline int mac_os_x_version_max_allowed()
4350
{
4451
#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED

0 commit comments

Comments
 (0)