[PATCH 2/6] Optimize i386 syscall inlining

H.J. Lu hjl.tools@gmail.com
Fri Aug 21 14:54:00 GMT 2015


On Fri, Aug 21, 2015 at 7:01 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Fri, Aug 21, 2015 at 5:55 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Fri, Aug 21, 2015 at 5:35 AM, Joseph Myers <joseph@codesourcery.com> wrote:
>>> You define INLINE_SYSCALL_ERROR_RETURN to ignore the specified return
>>> value.  There is nothing in the comments on the default version of that
>>> macro in sysdeps/unix/sysdep.h to say that it is OK to ignore the return
>>> value.  If the return value must always be -1, I think the macro should
>>> take one fewer argument rather than having specified semantics that the
>>> last argument must always be -1, or that the macro may return -1 and
>>> ignore the last argument.
>>
>> __syscall_error is for tail call from system call error and it has been used
>> this way in glibc.  It is OK to tail call __syscall_error and ignore the user
>> provided return value for syscall error.  I can add a comment to i386
>> INLINE_SYSCALL_ERROR_RETURN.
>>
>
> Like this:
>
> /* Set error number and return value.  It should only be used with
>    function return.  __syscall_error is for tail call from syscall error.
>    It is OK to tail call __syscall_error and ignore the user provided
>    return value for syscall error.  */
> #undef INLINE_SYSCALL_ERROR_RETURN
> #define INLINE_SYSCALL_ERROR_RETURN(resultvar, type, value) \
>   ({                                                                    \
>     _Static_assert ((type) -1 == (type) (value),                        \
>                     "syscall error return is not -1");                  \
>     return (type) __syscall_error (resultvar);                          \
>     (type) -1;                                                          \
>   })
>

This is the patch I will check in next Monday.

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Optimize-i386-syscall-inlining.patch
Type: text/x-patch
Size: 39145 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20150821/c7b0be8c/attachment.bin>


More information about the Libc-alpha mailing list