trap-manager: Add support to handle acquires for per-CPU SAs

This commit is contained in:
Tobias Brunner
2025-05-28 16:35:27 +02:00
parent 65b7f9d563
commit 4a595508b7
+7 -5
View File
@@ -159,11 +159,12 @@ static void destroy_acquire(acquire_t *this)
CALLBACK(acquire_by_reqid, bool,
acquire_t *this, va_list args)
{
uint32_t reqid;
uint32_t reqid, cpu;
sec_label_t *label;
VA_ARGS_VGET(args, reqid, label);
return this->reqid == reqid && sec_labels_equal(this->data->label, label);
VA_ARGS_VGET(args, reqid, cpu, label);
return this->reqid == reqid && this->data->cpu == cpu &&
sec_labels_equal(this->data->label, label);
}
CALLBACK(acquire_by_dst, bool,
@@ -573,7 +574,8 @@ METHOD(trap_manager_t, acquire, void,
else
{
this->acquires->find_first(this->acquires, acquire_by_reqid,
(void**)&acquire, reqid, data->label);
(void**)&acquire, reqid, data->cpu,
data->label);
}
if (!acquire)
{
@@ -643,7 +645,7 @@ METHOD(trap_manager_t, acquire, void,
{
child_init_args_t args = {
.reqid = allocated_reqid,
.cpu = CPU_ID_MAX,
.cpu = data->cpu,
.src = data->src,
.dst = data->dst,
.label = data->label,