Re: [PATCH net-next v3 01/17] asm: simd context helper API

From: Jason A. Donenfeld
Date: Thu Sep 13 2018 - 09:52:40 EST


On Thu, Sep 13, 2018 at 7:03 AM Kevin Easton <kevin@xxxxxxxxxxx> wrote:
> Yes. It's also how most get/put APIs already work in the kernel, eg
> kref_get/put (mostly because they tend to be 'getting/putting' an
> already-initialized object, though).

Right; in this case the object wouldn't be initialized yet, which
might defeat the purpose, since one advantage of the & way you
mentioned is _put modifies the context.

Andy - any opinions on this? The tl;dr is:

1) what we have now:

simd_context_t simd_context = simd_get();
for (item in items) {
do_something(item);
simd_context = simd_relax(simd_context);
}
simd_put();

2) what kevin is proposing:

simd_context_t simd_context;

simd_get(&simd_context);
for (item in items) {
do_something(item);
simd_relax(&simd_context);
}
simd_put(&simd_context);

I can see pros and cons of each approach.