Date: Sat, 12 Mar 2011 22:24:09 -0800 From: Artem Belevich <fbsdlist@src.cx> To: Alexander Leidinger <Alexander@leidinger.net> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Andriy Gapon <avg@freebsd.org> Subject: Re: svn commit: r219559 - in head/sys: amd64/linux32 compat/freebsd32 i386/linux kern Message-ID: <AANLkTimOAKLJm10dZAu2SYPeUk3agL_hsv-t7D1UHOj5@mail.gmail.com> In-Reply-To: <20110312205719.00004e67@unknown> References: <201103120851.p2C8phoN010341@svn.freebsd.org> <20110312205719.00004e67@unknown>
next in thread | previous in thread | raw e-mail | index | archive | help
> I assume this also includes syscall provider support for linux syscalls
> on i386. Some questions below.
Yes.
>
>> Modified: head/sys/i386/linux/syscalls.master
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 l_hand=
ler_t handler); }
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 void *=
handler); }
>
> What's wrong with l_handler_t?
I don't recall the details, but I believe that the way l_handler_t is
defined resulted in compilation errors in generated glue code. Glue
generation code relies on '*' before the argument name in order to
tell scalars from pointers. l_handler_t was interpreted as a scalar
and on i386 where l_handler_t is a pointer, it produced compilation
warning.
>
>> @@ -148,7 +148,7 @@
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 stru=
ct timeval *tp, \
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 stru=
ct timezone *tzp); }
>> =A079 =A0 AUE_SETTIMEOFDAY =A0 =A0 =A0 =A0NOPROTO { int
>> settimeofday( \
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct=
timeval *tp, \
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct=
timeval *tv, \
>
> What's wrong with tp?
settimeofday_args has the field named tv. With the argument named tp
in the syscalls.master, the glue code generated for systrace provider
would attempt to use settimeofday_args->tp and that does not compile.
We rely on syscall argument names in syscall.master to match field
names in appropriate <syscall_name>_args.
--Artem
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTimOAKLJm10dZAu2SYPeUk3agL_hsv-t7D1UHOj5>
