[zx] Add zx::interrupt::bind_vcpu
This exposes the zx_interrupt_bind_vcpu syscall through the
zx::interrupt object.
MAC-180
Test: N/A
Change-Id: I3353d6546f6471aee179b74086343f570bcedf59
diff --git a/system/ulib/zx/include/lib/zx/interrupt.h b/system/ulib/zx/include/lib/zx/interrupt.h
index 2b874d3..2f559ae 100644
--- a/system/ulib/zx/include/lib/zx/interrupt.h
+++ b/system/ulib/zx/include/lib/zx/interrupt.h
@@ -10,6 +10,7 @@
#include <lib/zx/port.h>
#include <lib/zx/resource.h>
#include <lib/zx/time.h>
+#include <lib/zx/vcpu.h>
namespace zx {
@@ -49,6 +50,10 @@
return zx_interrupt_bind(get(), port.get(), key, options);
}
+ zx_status_t bind_vcpu(const zx::vcpu& vcpu, uint32_t options) {
+ return zx_interrupt_bind_vcpu(get(), vcpu.get(), options);
+ }
+
zx_status_t ack() {
return zx_interrupt_ack(get());
}
diff --git a/system/utest/core/interrupt/interrupt-test.cpp b/system/utest/core/interrupt/interrupt-test.cpp
index 92246cc..5508fcc 100644
--- a/system/utest/core/interrupt/interrupt-test.cpp
+++ b/system/utest/core/interrupt/interrupt-test.cpp
@@ -189,8 +189,8 @@
ASSERT_EQ(zx::vcpu::create(guest, 0, 0, &vcpu1), ZX_OK);
ASSERT_EQ(zx::vcpu::create(guest, 0, 0, &vcpu2), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu1.get(), 0), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu2.get(), 0), ZX_OK);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu1, 0), ZX_OK);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu2, 0), ZX_OK);
END_TEST;
}
@@ -218,7 +218,7 @@
ASSERT_EQ(zx::vcpu::create(guest, 0, 0, &vcpu), ZX_OK);
ASSERT_EQ(interrupt.bind(port, 0, 0), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu.get(), 0), ZX_ERR_NOT_SUPPORTED);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu, 0), ZX_ERR_NOT_SUPPORTED);
END_TEST;
}
@@ -246,7 +246,7 @@
ASSERT_EQ(zx::vcpu::create(guest, 0, 0, &vcpu), ZX_OK);
ASSERT_EQ(interrupt.bind(port, 0, 0), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu.get(), 0), ZX_ERR_ALREADY_BOUND);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu, 0), ZX_ERR_ALREADY_BOUND);
END_TEST;
}
@@ -276,8 +276,8 @@
ASSERT_EQ(zx::guest::create(*resource, 0, &guest2, &vmar2), ZX_OK);
ASSERT_EQ(zx::vcpu::create(guest2, 0, 0, &vcpu2), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu1.get(), 0), ZX_OK);
- ASSERT_EQ(zx_interrupt_bind_vcpu(interrupt.get(), vcpu2.get(), 0), ZX_ERR_INVALID_ARGS);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu1, 0), ZX_OK);
+ ASSERT_EQ(interrupt.bind_vcpu(vcpu2, 0), ZX_ERR_INVALID_ARGS);
END_TEST;
}