On Dec 15, 2012, at 12:34 PM, Mark Johnston wrote: > On Sat, Dec 15, 2012 at 06:55:53PM +0200, Alexander Motin wrote: >> Hi. >> >> I'm sorry to interrupt review, but as usual good ideas came during the >> final testing, causing another round. :) Here is updated patch for >> HEAD, that includes several new changes: >> http://people.freebsd.org/~mav/calloutng_12_15.patch > > This patch breaks the libprocstat build. > > Specifically, the OpenSolaris sys/time.h defines the preprocessor > symbols gethrestime and gethrestime_sec. These symbols are also defined > in cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h. > libprocstat:zfs.c is compiled using include paths that pick up the > OpenSolaris time.h, and with this patch _callout.h includes sys/time.h. > > zfs.c includes taskqueue.h (with _KERNEL defined), which includes > _callout.h, so both time.h and zfs_context.h are included in zfs.c, and > the symbols are thus defined twice. > > The patch below fixes the build for me. Another approach might be to > include sys/_task.h instead of taskqueue.h at the beginning of zfs.c. I had a patch open once upon a time to cleanup inclusion of sys/time.h all over the tree and deal with the sys/time.h <-> time.h pollution issue, but it got dropped due to lack of interest (20~30 apps/libs were affected IIRC and I only really got assistance in fixing the UFS and bsnmpd pieces, and gave up due to lack of response from maintainers). dtrace/zfs is a definite instigator in this pollution (I remember nasty cddl/... pollution with the compat sys/time.h header). Bottom line: make sure anything new you're defining isn't already defined via POSIX or other OSes, and if so please try to make the implementations match (so that eventual POSIX inclusion might be possible) and when in doubt I suggest consulting standards_at_ / brde_at_. Cheers, -GarrettReceived on Sat Dec 15 2012 - 19:46:13 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:33 UTC