Thread (103 messages) 103 messages, 14 authors, 2018-09-19

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

From: Andy Lutomirski <luto@amacapital.net>
Date: 2018-09-15 19:58:49
Also in: linux-arch, lkml

On Sep 13, 2018, at 6:52 AM, Jason A. Donenfeld [off-list ref] wrote:
quoted
On Thu, Sep 13, 2018 at 7:03 AM Kevin Easton [off-list ref] 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.
I have no strong opinion, except that, if you paint the bikeshed “pass by value”, then simd_get and simd_relax should probably have warn_unused_result set.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help