Skip to content

Commit 6b1951c

Browse files
committed
Use a struct instead of a tuple for HostFuncsWrapper
Signed-off-by: Jorge Prendes <[email protected]>
1 parent 1d8c732 commit 6b1951c

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/hyperlight_host/src/sandbox/host_funcs.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ use crate::{new_error, Result};
2929
#[derive(Default, Clone)]
3030
/// A Wrapper around details of functions exposed by the Host
3131
pub struct HostFuncsWrapper {
32-
functions_map: HashMap<String, (HyperlightFunction, Option<Vec<ExtraAllowedSyscall>>)>,
32+
functions_map: HashMap<String, FunctionEntry>,
33+
}
34+
35+
#[derive(Clone)]
36+
pub struct FunctionEntry {
37+
pub function: HyperlightFunction,
38+
pub extra_allowed_syscalls: Option<Vec<ExtraAllowedSyscall>>,
3339
}
3440

3541
impl HostFuncsWrapper {
@@ -86,7 +92,7 @@ impl HostFuncsWrapper {
8692
fn register_host_function_helper(
8793
&mut self,
8894
name: String,
89-
func: HyperlightFunction,
95+
function: HyperlightFunction,
9096
extra_allowed_syscalls: Option<Vec<ExtraAllowedSyscall>>,
9197
) -> Result<()> {
9298
#[cfg(not(all(feature = "seccomp", target_os = "linux")))]
@@ -95,16 +101,24 @@ impl HostFuncsWrapper {
95101
"Extra syscalls are only supported on Linux with seccomp"
96102
));
97103
}
98-
self.functions_map
99-
.insert(name, (func, extra_allowed_syscalls));
104+
self.functions_map.insert(
105+
name,
106+
FunctionEntry {
107+
function,
108+
extra_allowed_syscalls,
109+
},
110+
);
100111
Ok(())
101112
}
102113

103114
#[instrument(err(Debug), skip_all, parent = Span::current(), level = "Trace")]
104115
fn call_host_func_impl(&self, name: &str, args: Vec<ParameterValue>) -> Result<ReturnValue> {
105116
// Inner function containing the common logic
106117
let do_call = || {
107-
let (func, syscalls) = self
118+
let FunctionEntry {
119+
function,
120+
extra_allowed_syscalls,
121+
} = self
108122
.functions_map
109123
.get(name)
110124
.ok_or_else(|| HostFunctionNotFound(name.to_string()))?;
@@ -113,12 +127,12 @@ impl HostFuncsWrapper {
113127
{
114128
let seccomp_filter =
115129
crate::seccomp::guest::get_seccomp_filter_for_host_function_worker_thread(
116-
syscalls.clone(),
130+
extra_allowed_syscalls.clone(),
117131
)?;
118132
seccompiler::apply_filter(&seccomp_filter)?;
119133
}
120134

121-
crate::metrics::maybe_time_and_emit_host_call(name, || func.call(args))
135+
crate::metrics::maybe_time_and_emit_host_call(name, || function.call(args))
122136
};
123137

124138
// Create a new thread when seccomp is enabled on Linux

0 commit comments

Comments
 (0)