On Thu, Sep 13, 2018 at 7:03 AM Kevin Easton <[email protected]> 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.