source: rtems/cpukit/posix/src/posixtimespecsubtract.c @ 0061ef98

4.104.114.84.9
Last change on this file since 0061ef98 was 0061ef98, checked in by Joel Sherrill <joel.sherrill@…>, on Mar 26, 2007 at 10:56:12 PM

2007-03-26 Joel Sherrill <joel@…>

PR 1231/cpukit

  • posix/src/adasupp.c, posix/src/clockgetcpuclockid.c, posix/src/clockgetenableattr.c, posix/src/clockgetres.c, posix/src/clockgettime.c, posix/src/clocksetenableattr.c, posix/src/mutex.c, posix/src/mutexattrdestroy.c, posix/src/mutexattrgetprioceiling.c, posix/src/mutexattrgetprotocol.c, posix/src/mutexattrgetpshared.c, posix/src/mutexattrinit.c, posix/src/mutexattrsetprioceiling.c, posix/src/mutexattrsetprotocol.c, posix/src/mutexattrsetpshared.c, posix/src/mutexdefaultattributes.c, posix/src/mutexdestroy.c, posix/src/mutexgetprioceiling.c, posix/src/mutexlock.c, posix/src/mutexlocksupp.c, posix/src/mutexmp.c, posix/src/mutexsetprioceiling.c, posix/src/mutextimedlock.c, posix/src/mutextrylock.c, posix/src/mutexunlock.c, posix/src/nanosleep.c, posix/src/posixintervaltotimespec.c, posix/src/posixtimespecsubtract.c, posix/src/posixtimespectointerval.c, posix/src/psignalclearprocesssignals.c, posix/src/psignalclearsignals.c, posix/src/psignalsetprocesssignals.c, posix/src/psignalunblockthread.c, posix/src/ptimer.c, posix/src/ptimer1.c, posix/src/sched.c, posix/src/time.c: Remove unneeded includes of assert.h
  • Property mode set to 100644
File size: 1.1 KB
Line 
1/*
2 *  $Id$
3 */
4
5#if HAVE_CONFIG_H
6#include "config.h"
7#endif
8
9#include <time.h>
10#include <errno.h>
11
12#include <rtems/system.h>
13#include <rtems/score/isr.h>
14#include <rtems/score/thread.h>
15#include <rtems/score/tod.h>
16
17#include <rtems/seterr.h>
18#include <rtems/posix/time.h>
19
20/*PAGE
21 *
22 *  _POSIX_Timespec_subtract
23 */
24
25void _POSIX_Timespec_subtract(
26  const struct timespec *the_start,
27  const struct timespec *end,
28  struct timespec *result
29)
30{
31  struct timespec  start_struct = *the_start;
32  struct timespec *start = &start_struct;
33  uint32_t   nsecs_per_sec = TOD_NANOSECONDS_PER_SECOND;
34
35  if (end->tv_nsec < start->tv_nsec) {
36    int seconds = (start->tv_nsec - end->tv_nsec) / nsecs_per_sec + 1;
37    start->tv_nsec -= nsecs_per_sec * seconds;
38    start->tv_sec += seconds;
39  }
40
41  if (end->tv_nsec - start->tv_nsec > nsecs_per_sec) {
42    int seconds = (start->tv_nsec - end->tv_nsec) / nsecs_per_sec;
43    start->tv_nsec += nsecs_per_sec * seconds;
44    start->tv_sec -= seconds;
45  }
46
47  result->tv_sec  = end->tv_sec - start->tv_sec;
48  result->tv_nsec = end->tv_nsec - start->tv_nsec;
49}
Note: See TracBrowser for help on using the repository browser.