OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [LINUX_2_4_26_OR32/] [linux/] [linux-2.4/] [include/] [linux/] [time.h] - Diff between revs 1279 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 1279 Rev 1765
#ifndef _LINUX_TIME_H
#ifndef _LINUX_TIME_H
#define _LINUX_TIME_H
#define _LINUX_TIME_H
 
 
#include <asm/param.h>
#include <asm/param.h>
#include <linux/types.h>
#include <linux/types.h>
 
 
#ifndef _STRUCT_TIMESPEC
#ifndef _STRUCT_TIMESPEC
#define _STRUCT_TIMESPEC
#define _STRUCT_TIMESPEC
struct timespec {
struct timespec {
        time_t  tv_sec;         /* seconds */
        time_t  tv_sec;         /* seconds */
        long    tv_nsec;        /* nanoseconds */
        long    tv_nsec;        /* nanoseconds */
};
};
#endif /* _STRUCT_TIMESPEC */
#endif /* _STRUCT_TIMESPEC */
 
 
#ifdef __KERNEL__
#ifdef __KERNEL__
 
 
/*
/*
 * Change timeval to jiffies, trying to avoid the
 * Change timeval to jiffies, trying to avoid the
 * most obvious overflows..
 * most obvious overflows..
 *
 *
 * And some not so obvious.
 * And some not so obvious.
 *
 *
 * Note that we don't want to return MAX_LONG, because
 * Note that we don't want to return MAX_LONG, because
 * for various timeout reasons we often end up having
 * for various timeout reasons we often end up having
 * to wait "jiffies+1" in order to guarantee that we wait
 * to wait "jiffies+1" in order to guarantee that we wait
 * at _least_ "jiffies" - so "jiffies+1" had better still
 * at _least_ "jiffies" - so "jiffies+1" had better still
 * be positive.
 * be positive.
 */
 */
#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
 
 
static __inline__ unsigned long
static __inline__ unsigned long
timespec_to_jiffies(struct timespec *value)
timespec_to_jiffies(struct timespec *value)
{
{
        unsigned long sec = value->tv_sec;
        unsigned long sec = value->tv_sec;
        long nsec = value->tv_nsec;
        long nsec = value->tv_nsec;
 
 
        if (sec >= (MAX_JIFFY_OFFSET / HZ))
        if (sec >= (MAX_JIFFY_OFFSET / HZ))
                return MAX_JIFFY_OFFSET;
                return MAX_JIFFY_OFFSET;
        nsec += 1000000000L / HZ - 1;
        nsec += 1000000000L / HZ - 1;
        nsec /= 1000000000L / HZ;
        nsec /= 1000000000L / HZ;
        return HZ * sec + nsec;
        return HZ * sec + nsec;
}
}
 
 
static __inline__ void
static __inline__ void
jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
{
{
        value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
        value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
        value->tv_sec = jiffies / HZ;
        value->tv_sec = jiffies / HZ;
}
}
 
 
 
 
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
 * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
 * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
 * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
 * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
 *
 *
 * [For the Julian calendar (which was used in Russia before 1917,
 * [For the Julian calendar (which was used in Russia before 1917,
 * Britain & colonies before 1752, anywhere else before 1582,
 * Britain & colonies before 1752, anywhere else before 1582,
 * and is still in use by some communities) leave out the
 * and is still in use by some communities) leave out the
 * -year/100+year/400 terms, and add 10.]
 * -year/100+year/400 terms, and add 10.]
 *
 *
 * This algorithm was first published by Gauss (I think).
 * This algorithm was first published by Gauss (I think).
 *
 *
 * WARNING: this function will overflow on 2106-02-07 06:28:16 on
 * WARNING: this function will overflow on 2106-02-07 06:28:16 on
 * machines were long is 32-bit! (However, as time_t is signed, we
 * machines were long is 32-bit! (However, as time_t is signed, we
 * will already get problems at other places on 2038-01-19 03:14:08)
 * will already get problems at other places on 2038-01-19 03:14:08)
 */
 */
static inline unsigned long
static inline unsigned long
mktime (unsigned int year, unsigned int mon,
mktime (unsigned int year, unsigned int mon,
        unsigned int day, unsigned int hour,
        unsigned int day, unsigned int hour,
        unsigned int min, unsigned int sec)
        unsigned int min, unsigned int sec)
{
{
        if (0 >= (int) (mon -= 2)) {     /* 1..12 -> 11,12,1..10 */
        if (0 >= (int) (mon -= 2)) {     /* 1..12 -> 11,12,1..10 */
                mon += 12;              /* Puts Feb last since it has leap day */
                mon += 12;              /* Puts Feb last since it has leap day */
                year -= 1;
                year -= 1;
        }
        }
 
 
        return (((
        return (((
                (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
                (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
                        year*365 - 719499
                        year*365 - 719499
            )*24 + hour /* now have hours */
            )*24 + hour /* now have hours */
          )*60 + min /* now have minutes */
          )*60 + min /* now have minutes */
        )*60 + sec; /* finally seconds */
        )*60 + sec; /* finally seconds */
}
}
 
 
#endif /* __KERNEL__ */
#endif /* __KERNEL__ */
 
 
 
 
struct timeval {
struct timeval {
        time_t          tv_sec;         /* seconds */
        time_t          tv_sec;         /* seconds */
        suseconds_t     tv_usec;        /* microseconds */
        suseconds_t     tv_usec;        /* microseconds */
};
};
 
 
struct timezone {
struct timezone {
        int     tz_minuteswest; /* minutes west of Greenwich */
        int     tz_minuteswest; /* minutes west of Greenwich */
        int     tz_dsttime;     /* type of dst correction */
        int     tz_dsttime;     /* type of dst correction */
};
};
 
 
#define NFDBITS                 __NFDBITS
#define NFDBITS                 __NFDBITS
 
 
#ifdef __KERNEL__
#ifdef __KERNEL__
extern void do_gettimeofday(struct timeval *tv);
extern void do_gettimeofday(struct timeval *tv);
extern void do_settimeofday(struct timeval *tv);
extern void do_settimeofday(struct timeval *tv);
#endif
#endif
 
 
#define FD_SETSIZE              __FD_SETSIZE
#define FD_SETSIZE              __FD_SETSIZE
#define FD_SET(fd,fdsetp)       __FD_SET(fd,fdsetp)
#define FD_SET(fd,fdsetp)       __FD_SET(fd,fdsetp)
#define FD_CLR(fd,fdsetp)       __FD_CLR(fd,fdsetp)
#define FD_CLR(fd,fdsetp)       __FD_CLR(fd,fdsetp)
#define FD_ISSET(fd,fdsetp)     __FD_ISSET(fd,fdsetp)
#define FD_ISSET(fd,fdsetp)     __FD_ISSET(fd,fdsetp)
#define FD_ZERO(fdsetp)         __FD_ZERO(fdsetp)
#define FD_ZERO(fdsetp)         __FD_ZERO(fdsetp)
 
 
/*
/*
 * Names of the interval timers, and structure
 * Names of the interval timers, and structure
 * defining a timer setting.
 * defining a timer setting.
 */
 */
#define ITIMER_REAL     0
#define ITIMER_REAL     0
#define ITIMER_VIRTUAL  1
#define ITIMER_VIRTUAL  1
#define ITIMER_PROF     2
#define ITIMER_PROF     2
 
 
struct  itimerspec {
struct  itimerspec {
        struct  timespec it_interval;    /* timer period */
        struct  timespec it_interval;    /* timer period */
        struct  timespec it_value;       /* timer expiration */
        struct  timespec it_value;       /* timer expiration */
};
};
 
 
struct  itimerval {
struct  itimerval {
        struct  timeval it_interval;    /* timer interval */
        struct  timeval it_interval;    /* timer interval */
        struct  timeval it_value;       /* current value */
        struct  timeval it_value;       /* current value */
};
};
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.