Ignore:
Timestamp:
Feb 3, 2017, 2:02:34 PM (8 years ago)
Author:
Silvan Scherrer
Message:

cpio: update vendor to version 2.12

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified cpio/vendor/current/gnu/timespec.h

    r118 r1964  
    1 /* -*- buffer-read-only: t -*- vi: set ro: */
    2 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
    31/* timespec -- System time interface
    42
    5    Copyright (C) 2000, 2002, 2004-2005, 2007, 2009-2010 Free Software
     3   Copyright (C) 2000, 2002, 2004-2005, 2007, 2009-2015 Free Software
    64   Foundation, Inc.
    75
     
    2422# include <time.h>
    2523
     24#ifndef _GL_INLINE_HEADER_BEGIN
     25 #error "Please include config.h first."
     26#endif
     27_GL_INLINE_HEADER_BEGIN
     28#ifndef _GL_TIMESPEC_INLINE
     29# define _GL_TIMESPEC_INLINE _GL_INLINE
     30#endif
     31
     32/* Resolution of timespec time stamps (in units per second), and log
     33   base 10 of the resolution.  */
     34
     35enum { TIMESPEC_RESOLUTION = 1000000000 };
     36enum { LOG10_TIMESPEC_RESOLUTION = 9 };
     37
     38/* Return a timespec with seconds S and nanoseconds NS.  */
     39
     40_GL_TIMESPEC_INLINE struct timespec
     41make_timespec (time_t s, long int ns)
     42{
     43  struct timespec r;
     44  r.tv_sec = s;
     45  r.tv_nsec = ns;
     46  return r;
     47}
     48
    2649/* Return negative, zero, positive if A < B, A == B, A > B, respectively.
    27    Assume the nanosecond components are in range, or close to it.  */
    28 static inline int
     50
     51   For each time stamp T, this code assumes that either:
     52
     53     * T.tv_nsec is in the range 0..999999999; or
     54     * T.tv_sec corresponds to a valid leap second on a host that supports
     55       leap seconds, and T.tv_nsec is in the range 1000000000..1999999999; or
     56     * T.tv_sec is the minimum time_t value and T.tv_nsec is -1; or
     57       T.tv_sec is the maximum time_t value and T.tv_nsec is 2000000000.
     58       This allows for special struct timespec values that are less or
     59       greater than all possible valid time stamps.
     60
     61   In all these cases, it is safe to subtract two tv_nsec values and
     62   convert the result to integer without worrying about overflow on
     63   any platform of interest to the GNU project, since all such
     64   platforms have 32-bit int or wider.
     65
     66   Replacing "(int) (a.tv_nsec - b.tv_nsec)" with something like
     67   "a.tv_nsec < b.tv_nsec ? -1 : a.tv_nsec > b.tv_nsec" would cause
     68   this function to work in some cases where the above assumption is
     69   violated, but not in all cases (e.g., a.tv_sec==1, a.tv_nsec==-2,
     70   b.tv_sec==0, b.tv_nsec==999999999) and is arguably not worth the
     71   extra instructions.  Using a subtraction has the advantage of
     72   detecting some invalid cases on platforms that detect integer
     73   overflow.
     74
     75   The (int) cast avoids a gcc -Wconversion warning.  */
     76
     77_GL_TIMESPEC_INLINE int _GL_ATTRIBUTE_PURE
    2978timespec_cmp (struct timespec a, struct timespec b)
    3079{
    3180  return (a.tv_sec < b.tv_sec ? -1
    3281          : a.tv_sec > b.tv_sec ? 1
    33           : a.tv_nsec < b.tv_nsec ? -1
    34           : a.tv_nsec > b.tv_nsec ? 1
    35           : 0);
     82          : (int) (a.tv_nsec - b.tv_nsec));
     83}
     84
     85/* Return -1, 0, 1, depending on the sign of A.  A.tv_nsec must be
     86   nonnegative.  */
     87_GL_TIMESPEC_INLINE int _GL_ATTRIBUTE_PURE
     88timespec_sign (struct timespec a)
     89{
     90  return a.tv_sec < 0 ? -1 : a.tv_sec || a.tv_nsec;
     91}
     92
     93struct timespec timespec_add (struct timespec, struct timespec)
     94  _GL_ATTRIBUTE_CONST;
     95struct timespec timespec_sub (struct timespec, struct timespec)
     96  _GL_ATTRIBUTE_CONST;
     97struct timespec dtotimespec (double)
     98  _GL_ATTRIBUTE_CONST;
     99
     100/* Return an approximation to A, of type 'double'.  */
     101_GL_TIMESPEC_INLINE double
     102timespectod (struct timespec a)
     103{
     104  return a.tv_sec + a.tv_nsec / 1e9;
    36105}
    37106
     
    39108int settime (struct timespec const *);
    40109
     110_GL_INLINE_HEADER_END
     111
    41112#endif
Note: See TracChangeset for help on using the changeset viewer.