<div dir="ltr">Maybe we can even do this using lexical binding, since GET-ERRNO could be a macro that expands to a lexical variable introduced by WITH-ERRNO.<br><div><br></div><div>Could you elaborate where there's a consing issue, if errno is returned as the last, or first, value?</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 12:15 AM, Luís Oliveira <span dir="ltr"><<a href="mailto:luismbo@gmail.com" target="_blank">luismbo@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Felix Filozov <<a href="mailto:ffilozov@gmail.com">ffilozov@gmail.com</a>> writes:<br>
<br>
> If I understood Duane Rettig's response correctly, when a thread binds<br>
> a special variable using a let, that binding is only visible for that<br>
> particular thread. Is this how other Lisps behave?<br>
<br>
</div>All CLs I'm aware of behave like that, yes.<br>
<div class="im"><br>
<br>
> With that in mind, in order to make with-errno work, the foreign<br>
> function call expression would have to be identified and bound with a<br>
> let.<br>
<br>
</div>Why is that? I was thinking that the interface could work as follows:<br>
<br>
  1. WITH-ERRNO establishes a dynamic binding (cffi-sys:*errno* for<br>
     instance)<br>
  2. FOREIGN-FUNCALL does something like<br>
       (when (boundp '*errno*) (setf *errno* <errno>))<br>
  3. GET-ERRNO simply returns the value of *errno*<br>
<div class="im"><br>
<br>
> You mentioned that a foreign function call could return errno as the<br>
> first value, how about returning it as the last?<br>
<br>
</div>That would be much simpler wouldn't it? I wonder if we can avoid<br>
consing, at least for the single return value case... If all else fails,<br>
simply documenting that grabbing errno entails discarding all but the<br>
first return value might be a solution.<br>
<div class="im"><br>
<br>
> Another alternative is to optimize the way synchronization is done, so<br>
> that we could improve the thread-local code I wrote before.<br>
<br>
</div>I don't have any good ideas on that front.<br>
<span class="HOEnZb"><font color="#888888"><br>
Luís<br>
<br>
<br>
</font></span></blockquote></div><br></div>