Skip to content

Commit

Permalink
Merge pull request #1213 from etsal/etsal/rusty-arenas-cleanup
Browse files Browse the repository at this point in the history
scx_rusty: Cleanup naming
  • Loading branch information
etsal authored Jan 17, 2025
2 parents 5eefa62 + 2da1d33 commit 8776d1b
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 91 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,76 +19,77 @@ struct {
__type(value, struct lb_domain);
__uint(max_entries, MAX_DOMS);
__uint(map_flags, 0);
} sdt_dom_map SEC(".maps");
} lb_domain_map SEC(".maps");

struct sdt_allocator sdt_dom_allocator;
volatile dom_ptr dom_ctxs[MAX_DOMS];
struct sdt_allocator lb_domain_allocator;

__hidden __noinline
int sdt_dom_init(void)
int lb_domain_init(void)
{
return sdt_alloc_init(&sdt_dom_allocator, sizeof(struct dom_ctx));
return sdt_alloc_init(&lb_domain_allocator, sizeof(struct dom_ctx));
}

__hidden __noinline
dom_ptr sdt_dom_alloc(u32 dom_id)
dom_ptr lb_domain_alloc(u32 dom_id)
{
struct sdt_data __arena *data = NULL;
struct lb_domain mval;
struct lb_domain lb_domain;
dom_ptr domc;
int ret;

data = sdt_alloc(&sdt_dom_allocator);
data = sdt_alloc(&lb_domain_allocator);
cast_kern(data);

mval.tid = data->tid;
mval.domc = (dom_ptr)data->payload;
lb_domain.tid = data->tid;
lb_domain.domc = (dom_ptr)data->payload;

ret = bpf_map_update_elem(&sdt_dom_map, &dom_id, &mval,
ret = bpf_map_update_elem(&lb_domain_map, &dom_id, &lb_domain,
BPF_EXIST);
if (ret) {
sdt_free_idx(&sdt_dom_allocator, data->tid.idx);
sdt_free_idx(&lb_domain_allocator, data->tid.idx);
return NULL;
}

domc = mval.domc;
domc = lb_domain.domc;
cast_kern(domc);

return domc;
}

__hidden
void sdt_dom_free(dom_ptr domc)
void lb_domain_free(dom_ptr domc)
{
struct lb_domain *mval;
struct lb_domain *lb_domain;
u32 key = domc->id;

sdt_subprog_init_arena();

mval = bpf_map_lookup_elem(&sdt_dom_map, &key);
if (!mval)
lb_domain = bpf_map_lookup_elem(&lb_domain_map, &key);
if (!lb_domain)
return;

sdt_free_idx(&sdt_dom_allocator, mval->tid.idx);
mval->domc = NULL;
sdt_free_idx(&lb_domain_allocator, lb_domain->tid.idx);
lb_domain->domc = NULL;

bpf_map_delete_elem(&sdt_dom_map, &key);
bpf_map_delete_elem(&lb_domain_map, &key);
}

static __always_inline
struct lb_domain *sdt_dom_val(u32 dom_id)
struct lb_domain *lb_domain_get(u32 dom_id)
{
return bpf_map_lookup_elem(&sdt_dom_map, &dom_id);
return bpf_map_lookup_elem(&lb_domain_map, &dom_id);
}

static dom_ptr try_lookup_dom_ctx_arena(u32 dom_id)
{
struct lb_domain *mval;
struct lb_domain *lb_domain;

mval = sdt_dom_val(dom_id);
if (!mval)
lb_domain = lb_domain_get(dom_id);
if (!lb_domain)
return NULL;

return mval->domc;
return lb_domain->domc;
}

static dom_ptr try_lookup_dom_ctx(u32 dom_id)
Expand All @@ -115,13 +116,13 @@ static dom_ptr lookup_dom_ctx(u32 dom_id)

static struct bpf_spin_lock *lookup_dom_vtime_lock(dom_ptr domc)
{
struct lb_domain *mval;
struct lb_domain *lb_domain;

mval = sdt_dom_val(domc->id);
if (!mval) {
lb_domain = lb_domain_get(domc->id);
if (!lb_domain) {
scx_bpf_error("Failed to lookup dom map value");
return NULL;
}

return &mval->vtime_lock;
return &lb_domain->vtime_lock;
}
Loading

0 comments on commit 8776d1b

Please sign in to comment.