summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author[email protected] <[email protected]>2010-11-21 23:55:44 +0000
committer[email protected] <[email protected]>2010-11-21 23:55:44 +0000
commitd57496b78cf3ffc5d56545149e0c749fe8f56b77 (patch)
treed3833b35b4ff5245fb93689c348f39fbea6edf30
parenta90c2712ed53f8f52d14241215b236cbad5aa6b1 (diff)
add time related function.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1082 bbd45198-f89e-11dd-88c7-29a3b14d5316
-rw-r--r--components/libc/newlib/libc.c29
-rw-r--r--components/libc/newlib/libc.h1
2 files changed, 30 insertions, 0 deletions
diff --git a/components/libc/newlib/libc.c b/components/libc/newlib/libc.c
index 477ee44504..90b0b7f2ee 100644
--- a/components/libc/newlib/libc.c
+++ b/components/libc/newlib/libc.c
@@ -2,6 +2,27 @@
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
+#include <sys/time.h>
+
+struct timeval _timevalue;
+static void libc_system_time_init()
+{
+ rt_device_t device;
+ time_t time;
+ rt_tick_t tick;
+
+ time = 0; tick = 0;
+ device = rt_device_find("rtc");
+ if (device != RT_NULL)
+ {
+ rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time);
+ }
+
+ tick = rt_tick_get();
+
+ _timevalue.tv_sec = time;
+ _timevalue.tv_usec = (1000000UL * tick)/RT_TICK_PER_SECOND;
+}
void libc_system_init(const char* tty_name)
{
@@ -20,3 +41,11 @@ void libc_system_init(const char* tty_name)
putenv("HOME=/");
}
+int libc_time_to_tick(const struct timespec *time)
+{
+ int tick;
+
+ tick = RT_WAITING_FOREVER;
+
+ return tick;
+}
diff --git a/components/libc/newlib/libc.h b/components/libc/newlib/libc.h
index b21a7264b3..60a86e49a6 100644
--- a/components/libc/newlib/libc.h
+++ b/components/libc/newlib/libc.h
@@ -2,5 +2,6 @@
#define __RTT_LIBC_H__
void libc_system_init(const char* tty_name);
+int libc_time_to_tick(const struct timespec *time);
#endif