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

Subversion Repositories ao486

[/] [ao486/] [trunk/] [syn/] [components/] [sd_card/] [firmware/] [bsp/] [HAL/] [src/] [alt_settod.c] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 alfik
/******************************************************************************
2
*                                                                             *
3
* License Agreement                                                           *
4
*                                                                             *
5
* Copyright (c) 2004 Altera Corporation, San Jose, California, USA.           *
6
* All rights reserved.                                                        *
7
*                                                                             *
8
* Permission is hereby granted, free of charge, to any person obtaining a     *
9
* copy of this software and associated documentation files (the "Software"),  *
10
* to deal in the Software without restriction, including without limitation   *
11
* the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
12
* and/or sell copies of the Software, and to permit persons to whom the       *
13
* Software is furnished to do so, subject to the following conditions:        *
14
*                                                                             *
15
* The above copyright notice and this permission notice shall be included in  *
16
* all copies or substantial portions of the Software.                         *
17
*                                                                             *
18
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
19
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
20
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
21
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
22
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
23
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
24
* DEALINGS IN THE SOFTWARE.                                                   *
25
*                                                                             *
26
* This agreement shall be governed in all respects by the laws of the State   *
27
* of California and by the laws of the United States of America.              *
28
*                                                                             *
29
* Altera does not recommend, suggest or require that this reference design    *
30
* file be used in conjunction or combination with any other product.          *
31
******************************************************************************/
32
 
33
#include <sys/time.h>
34
#include <sys/times.h>
35
 
36
#include "sys/alt_errno.h"
37
#include "sys/alt_alarm.h"
38
#include "os/alt_syscall.h"
39
 
40
/*
41
 * "alt_timezone" and "alt_resettime" are the values of the the reset time and
42
 * time zone set through the last call to settimeofday(). By default they are
43
 * zero initialised.
44
 */
45
 
46
extern struct timezone alt_timezone;
47
extern struct timeval  alt_resettime;
48
 
49
/*
50
 * Macro defining the number of micoseconds in a second.
51
 */
52
 
53
#define ALT_US (1000000)
54
 
55
 
56
/*
57
 * settimeofday() can be called to calibrate the system clock, so that
58
 * subsequent calls to gettimeofday() will return the elapsed "wall clock"
59
 * time.
60
 *
61
 * This is done by updating the global structures "alt_resettime" and
62
 * "alt_timezone" so that an immediate call to gettimeofday() would return
63
 * the value specified by "t" and "tz".
64
 *
65
 * Warning: if this function is called concurrently with a call to
66
 * gettimeofday(), the value returned by gettimeofday() will be unreliable.
67
 *
68
 * ALT_SETTIMEOFDAY is mapped onto the settimeofday() system call in
69
 * alt_syscall.h
70
 */
71
 
72
int ALT_SETTIMEOFDAY (const struct timeval  *t,
73
                      const struct timezone *tz)
74
{
75
  alt_u32 nticks    = alt_nticks ();
76
  alt_u32 tick_rate = alt_ticks_per_second ();
77
 
78
  /* If there is a system clock available, update the current time */
79
 
80
  if (tick_rate)
81
  {
82
    alt_resettime.tv_sec  = t->tv_sec - nticks/tick_rate;
83
    alt_resettime.tv_usec = t->tv_usec -
84
      ((nticks*(ALT_US/tick_rate))%ALT_US);
85
 
86
    alt_timezone.tz_minuteswest = tz->tz_minuteswest;
87
    alt_timezone.tz_dsttime     = tz->tz_dsttime;
88
 
89
    return 0;
90
  }
91
 
92
  /* There's no system clock available */
93
 
94
  ALT_ERRNO = ENOSYS;
95
  return -1;
96
}

powered by: WebSVN 2.1.0

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