trap-manager: Add support to handle acquires for per-CPU SAs
This commit is contained in:
@@ -159,11 +159,12 @@ static void destroy_acquire(acquire_t *this)
|
|||||||
CALLBACK(acquire_by_reqid, bool,
|
CALLBACK(acquire_by_reqid, bool,
|
||||||
acquire_t *this, va_list args)
|
acquire_t *this, va_list args)
|
||||||
{
|
{
|
||||||
uint32_t reqid;
|
uint32_t reqid, cpu;
|
||||||
sec_label_t *label;
|
sec_label_t *label;
|
||||||
|
|
||||||
VA_ARGS_VGET(args, reqid, label);
|
VA_ARGS_VGET(args, reqid, cpu, label);
|
||||||
return this->reqid == reqid && sec_labels_equal(this->data->label, label);
|
return this->reqid == reqid && this->data->cpu == cpu &&
|
||||||
|
sec_labels_equal(this->data->label, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
CALLBACK(acquire_by_dst, bool,
|
CALLBACK(acquire_by_dst, bool,
|
||||||
@@ -573,7 +574,8 @@ METHOD(trap_manager_t, acquire, void,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->acquires->find_first(this->acquires, acquire_by_reqid,
|
this->acquires->find_first(this->acquires, acquire_by_reqid,
|
||||||
(void**)&acquire, reqid, data->label);
|
(void**)&acquire, reqid, data->cpu,
|
||||||
|
data->label);
|
||||||
}
|
}
|
||||||
if (!acquire)
|
if (!acquire)
|
||||||
{
|
{
|
||||||
@@ -643,7 +645,7 @@ METHOD(trap_manager_t, acquire, void,
|
|||||||
{
|
{
|
||||||
child_init_args_t args = {
|
child_init_args_t args = {
|
||||||
.reqid = allocated_reqid,
|
.reqid = allocated_reqid,
|
||||||
.cpu = CPU_ID_MAX,
|
.cpu = data->cpu,
|
||||||
.src = data->src,
|
.src = data->src,
|
||||||
.dst = data->dst,
|
.dst = data->dst,
|
||||||
.label = data->label,
|
.label = data->label,
|
||||||
|
|||||||
Reference in New Issue
Block a user