svn commit: r224721 - head/sys/sys
Alexander Best
arundel at freebsd.org
Mon Aug 15 12:09:01 UTC 2011
On Mon Aug 15 11, Bruce Evans wrote:
> On Wed, 10 Aug 2011, Alexander Best wrote:
>
> >On Wed Aug 10 11, Bruce Evans wrote:
> >>On Wed, 10 Aug 2011, Alexander Best wrote:
> >>>any reason {TIMEVAL,TIMESPEC}_TO_{TIMESPEC,TIMEVAL}()s code is being
> >>>executed
> >>>in a
> >>>
> >>>do { ... } while (0)
> >>>
> >>>conditional loop?
> >>
> >>Just the usual syntactical trick for making large macros that look
> >>like function calls almost usable like function calls. Without the
> >...
> >thanks a lot for the in depth information. :) any reason, back in the
> >days, it
> >was decided that the functionality of converting a timespec to a timeval
> >and
> >vice versa should be implemented as a macro and not a function?
>
> Macros avoid some namespace pollution problems, and all the old kernel
> timeval manipulation interfaces are either extern functions or macros,
> partly because inline functions didn't exist when these interfaces were
> designed. But the TIME* macros still have gratuitously different styles:
> 1) they are spelled in upper case (which is "correct" since they are unsafe
> macros, but this is not done for the other timeval macros which are
> almost
> all unsafe)
> 2) FreeBSD moved their definitions from <sys/time.h> (where 4.4BSD-Lite
> put them) to <sys/timespec.h>. This is not incorrect (since <sys/time.h>
> is an old header that should only declare timeval interfaces (POSIX
> put timespec interfaces in <time.h>). However, the move became out of
> date before it was done (in 2001) because <sys/time.h> had already
> grown several other timespec interfaces which were not moved. But these
> were kernel-only, so they didn't cause namespace problems. Now
> <sys/time.h> has grown several more user timespec interfaces.
thanks for the explanation. :)
>
> Bruce
More information about the svn-src-head
mailing list