Re: svn commit: r209578 - head/sys/sys
2010/6/29 Kostik Belousov : > On Mon, Jun 28, 2010 at 02:07:02PM -0700, Matthew Fleming wrote: >> On Mon, Jun 28, 2010 at 10:59 AM, Konstantin Belousov >> 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 ___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"
Re: svn commit: r209578 - head/sys/sys
On Mon, Jun 28, 2010 at 02:07:02PM -0700, Matthew Fleming wrote: > On Mon, Jun 28, 2010 at 10:59 AM, Konstantin Belousov > 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. pgpWqOcrlYRSc.pgp Description: PGP signature
Re: svn commit: r209578 - head/sys/sys
On Mon, Jun 28, 2010 at 10:59 AM, Konstantin Belousov 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. Thanks, matthew ___ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"