svn commit: r209578 - head/sys/sys
mdf at FreeBSD.org
mdf at FreeBSD.org
Tue Jun 29 13:46:24 UTC 2010
2010/6/29 Kostik Belousov <kostikbel at gmail.com>:
> On Mon, Jun 28, 2010 at 02:07:02PM -0700, Matthew Fleming wrote:
>> On Mon, Jun 28, 2010 at 10:59 AM, Konstantin Belousov <kib at freebsd.org> wrote:
>> > Author: kib
>> > Date: Mon Jun 28 17:59:45 2010
>> > New Revision: 209578
>> > URL: http://svn.freebsd.org/changeset/base/209578
>> >
>> > Log:
>> > Use C99 initializers for the struct sysent generated by MAKE_SYSENT().
>> >
>> > MFC after: 1 week
>> >
>> > Modified:
>> > head/sys/sys/sysent.h
>> >
>> > Modified: head/sys/sys/sysent.h
>> > ==============================================================================
>> > --- head/sys/sys/sysent.h Mon Jun 28 17:45:00 2010 (r209577)
>> > +++ head/sys/sys/sysent.h Mon Jun 28 17:59:45 2010 (r209578)
>> > @@ -144,10 +144,10 @@ struct syscall_module_data {
>> >
>> > #define MAKE_SYSENT(syscallname) \
>> > static struct sysent syscallname##_sysent = { \
>> > - (sizeof(struct syscallname ## _args ) \
>> > + .sy_narg = (sizeof(struct syscallname ## _args ) \
>> > / sizeof(register_t)), \
>> > - (sy_call_t *)& syscallname, \
>> > - SYS_AUE_##syscallname \
>> > + .sy_call = (sy_call_t *)& syscallname, \
>> > + .sy_auevent = SYS_AUE_##syscallname, \
>> > }
>> >
>> > #define SYSCALL_MODULE(name, offset, new_sysent, evh, arg) \
>> >
>>
>> This change prevents (I assume) the use of MAKE_SYSENT() in a C++
>> kernel module, as C++ does not support the .name = value style of
>> named initializers.
>>
>> gcc does allow name: value initializers and it's easy to patch it to
>> accept .name = value, but it's not strictly conforming C++ code
>> anymore.
> I do not mind reverting this, I think it would be better then
> having #ifdef __cplusplus and two definitions. I really wanted to
> have a way to provide sparce initializator for the struct sysent.
> I managed to not require it for r209579.
I agree it's really handy to have sparse initializers; I just haven't
thought of a way to do that and continue to allow 3rd party c++
modules. Perhaps we'll get a new c++ standard soon that supports this
syntax. :-)
Thanks,
matthew
More information about the svn-src-all
mailing list