diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2005-11-30 23:37:14 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2005-11-30 23:37:14 +0000 |
commit | 7c15164f1772f7b0e093ff5dd1027051cddc764a (patch) | |
tree | 66b1a8fe4d12caf0f7c3fc1fe40559be5a7cd943 /libgloss/arm | |
parent | 1740d2580bf09d3451e55d3762ae63f71e10852f (diff) | |
download | newlib-7c15164f1772f7b0e093ff5dd1027051cddc764a.zip newlib-7c15164f1772f7b0e093ff5dd1027051cddc764a.tar.gz newlib-7c15164f1772f7b0e093ff5dd1027051cddc764a.tar.bz2 |
2005-11-30 Shaun Jackman <sjackman@gmail.com>
* arm/libcfunc.c (clock, sleep, usleep): New functions.
* arm/syscalls.c (_clock): New function.
(_times): Call _clock.
Diffstat (limited to 'libgloss/arm')
-rw-r--r-- | libgloss/arm/libcfunc.c | 32 | ||||
-rw-r--r-- | libgloss/arm/syscalls.c | 11 |
2 files changed, 41 insertions, 2 deletions
diff --git a/libgloss/arm/libcfunc.c b/libgloss/arm/libcfunc.c index f28f527..ffad2e7 100644 --- a/libgloss/arm/libcfunc.c +++ b/libgloss/arm/libcfunc.c @@ -43,6 +43,13 @@ alarm (unsigned seconds) return 0; } +clock_t _clock(void); +clock_t __attribute__((weak)) +clock(void) +{ + return _clock(); +} + int _isatty(int fildes); int __attribute__((weak)) isatty(int fildes) @@ -51,8 +58,31 @@ isatty(int fildes) } int __attribute__((weak)) -pause (void) +pause(void) { errno = ENOSYS; return -1; } + +#include <sys/types.h> +#include <time.h> + +unsigned __attribute__((weak)) +sleep(unsigned seconds) +{ + clock_t t0 = _clock(); + clock_t dt = seconds * CLOCKS_PER_SEC; + + while (_clock() - t0 < dt); + return 0; +} + +int __attribute__((weak)) +usleep(useconds_t useconds) +{ + clock_t t0 = _clock(); + clock_t dt = useconds / (1000000/CLOCKS_PER_SEC); + + while (_clock() - t0 < dt); + return 0; +} diff --git a/libgloss/arm/syscalls.c b/libgloss/arm/syscalls.c index 2701bb8..456b681 100644 --- a/libgloss/arm/syscalls.c +++ b/libgloss/arm/syscalls.c @@ -31,6 +31,7 @@ int _getpid _PARAMS ((int)); int _kill _PARAMS ((int, int)); void _exit _PARAMS ((int)); int _close _PARAMS ((int)); +clock_t _clock _PARAMS ((void)); int _swiclose _PARAMS ((int)); int _open _PARAMS ((const char *, int, ...)); int _swiopen _PARAMS ((const char *, int)); @@ -597,7 +598,7 @@ _gettimeofday (struct timeval * tp, struct timezone * tzp) /* Return a clock that ticks at 100Hz. */ clock_t -_times (struct tms * tp) +_clock (void) { clock_t timeval; @@ -606,6 +607,14 @@ _times (struct tms * tp) #else asm ("swi %a1; mov %0, r0" : "=r" (timeval): "i" (SWI_Clock) : "r0"); #endif + return timeval; +} + +/* Return a clock that ticks at 100Hz. */ +clock_t +_times (struct tms * tp) +{ + clock_t timeval = _clock(); if (tp) { |