sandbox: Add timer simulation
PATCH 1/1 sandbox: Add timer simulation
Making sleep command work
--- arch/sandbox/config.mk | 1 + arch/sandbox/cpu/cpu.c | 2 +- arch/sandbox/cpu/os.c | 15 +++++++++++++++ board/sandbox/sandbox/sandbox.c | 4 +++- include/os.h | 14 ++++++++++++++ 5 files changed, 34 insertions(+), 2 deletions(-)
arch/sandbox/config.mk +1 -0
@@ -18,3 +18,4 @@ # MA 02111-1307 USA PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ +PLATFORM_LIBS += -lrt
arch/sandbox/cpu/cpu.c +1 -1
@@ -34,7 +34,7 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])/* delay x useconds */ void __udelay (unsigned long usec) { -/* Ignore this for now */ +os_usleep (usec); }unsigned long timer_get_us (void )
arch/sandbox/cpu/os.c +15 -0
@@ -23,6 +23,7 @@#include <stdlib.h> #include <termios.h> #include <unistd.h> +#include <time.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h>
@@ -94,3 +95,17 @@ void *os_malloc(size_t length)return mmap (NULL , length,PROT_READ |PROT_WRITE ,MAP_PRIVATE |MAP_ANONYMOUS ,-1 ,0 ); } + +void os_usleep (unsigned long usec) +{ +usleep (usec); +} + +u64 os_get_nsec (void ) +{ +struct timespec tp; + +clock_gettime (CLOCK_MONOTONIC , &tp); + +return tp.tv_sec *1000000000ULL + tp.tv_nsec; +}
board/sandbox/sandbox/sandbox.c +3 -1
@@ -21,6 +21,8 @@#include <common.h> +#include <os.h> +/* * Pointer to initial global data area *
@@ -34,7 +36,7 @@ void flush_cache(unsigned long start, unsigned long size)ulong get_timer (ulong base) { -return 0 ; +return (os_get_nsec () /1000000 ) - base; }int timer_init (void )
include/os.h +14 -0
@@ -84,3 +84,17 @@ void os_tty_raw(int fd);* \return Pointer to length bytes or NULL on error */ void *os_malloc (size_t length); + +/** +* Access to the usleep function of the os +* +* \param usec Time to sleep in micro seconds +*/ +void os_usleep (unsigned long usec); + +/** +* Gets a monotonic increasing number of nano seconds from the OS +* +* \return A monotonic increasing time scaled in nano seconds +*/ +u64 os_get_nsec (void );
Signature · 1 line
1.7.5.4
PATCH 1/1 sandbox: Add timer simulation
Quoted 1 line · On Monday 28 November 2011 16:40:29 Matthias Weisser wrote:
Making sleep command work
i like the idea, but using clock_xxx funcs makes me sad (generally requires a "newerish" glibc and -lrt). my only alternative proposal is to use usec's with gettimeofday ... maybe that's good enough ? although we'll probably need to add nsec support eventually anyways for the newer timer code ...
feel like wiring up timer_get_us() too ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111128/818579cd/attachment.pgp>
PATCH 1/1 sandbox: Add timer simulation
Am 28.11.2011 23:57, schrieb Mike Frysinger:
Quoted 7 lines · On Monday 28 November 2011 16:40:29 Matthias Weisser wrote:
Quoted 1 line
Making sleep command work
i like the idea, but using
clock_xxxfuncs makes me sad (generally requires a "newerish" glibc and -lrt). my only alternative proposal is to use usec's with gettimeofday ... maybe that's good enough ? although we'll probably need to add nsec support eventually anyways for the newer timer code ...
I would like to stay with clock_gettime(CLOCK_MONOTONIC, ...) as the value isn't subjected to change when wall time is changed. Still there are chances to get wrong (non monotonic) values when NTP adjusts frequencies. Maybe some ifdef magic can be used to even use CLOCK_MONOTONIC_RAW if it is available and fall back to gettimeofday in case of older systems. The only thing would be then -lrt on the linker command line which has to be sorted out somehow.
Quoted 1 line
feel like wiring up
timer_get_us()too ?
Will do in a v2.
Matthias
PATCH 1/1 sandbox: Add timer simulation
Quoted 10 lines · On Tuesday 29 November 2011 04:35:06 Matthias Wei?er wrote:
Am 28.11.2011 23:57, schrieb Mike Frysinger:
Quoted 8 lines · On Monday 28 November 2011 16:40:29 Matthias Weisser wrote:
Quoted 1 line
Making sleep command work
i like the idea, but using
clock_xxxfuncs makes me sad (generally requires a "newerish" glibc and -lrt). my only alternative proposal is to use usec's with gettimeofday ... maybe that's good enough ? although we'll probably need to add nsec support eventually anyways for the newer timer code ...
Quoted 7 lines
I would like to stay with
clock_gettime(CLOCK_MONOTONIC, ...)as the value isn't subjected to change when wall time is changed. Still there are chances to get wrong (non monotonic) values when NTP adjusts frequencies. Maybe some ifdef magic can be used to even useCLOCK_MONOTONIC_RAWif it is available and fall back to gettimeofday in case of older systems. The only thing would be then -lrt on the linker command line which has to be sorted out somehow.
i think atm, we're focusing on sandbox working on Linux/glibc hosts. we're not *too* worried about portability atm. we can worry about that once sandbox is more than just a PoC toy :).
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111129/eb973418/attachment.pgp>
PATCH v2 1/1 sandbox: Add timer simulation
In reply to Matthias WeisserMaking sleep command work
---
Changes in v2:
- Added check for existence and working of clock_gettime
- Added implementation of timer_get_us
- Fixed a build error
arch/sandbox/config.mk | 1 + arch/sandbox/cpu/cpu.c | 4 ++-- arch/sandbox/cpu/os.c | 27 +++++++++++++++++++++++++++ board/sandbox/sandbox/sandbox.c | 4 +++- include/os.h | 14 ++++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-)
arch/sandbox/config.mk +1 -0
@@ -18,3 +18,4 @@ # MA 02111-1307 USA PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ +PLATFORM_LIBS += -lrt
arch/sandbox/cpu/cpu.c +2 -2
@@ -34,12 +34,12 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])/* delay x useconds */ void __udelay (unsigned long usec) { -/* Ignore this for now */ +os_usleep (usec); }unsigned long timer_get_us (void ) { -return 0 ; +return os_get_nsec () /1000 ; }int do_bootm_linux (int flag,int argc,char *argv[],bootm_headers_t *images)
arch/sandbox/cpu/os.c +27 -0
@@ -23,9 +23,12 @@#include <stdlib.h> #include <termios.h> #include <unistd.h> +#include <time.h> +#include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> +#include <linux/types.h> #include <os.h>
@@ -94,3 +97,27 @@ void *os_malloc(size_t length)return mmap (NULL , length,PROT_READ |PROT_WRITE ,MAP_PRIVATE |MAP_ANONYMOUS ,-1 ,0 ); } + +void os_usleep (unsigned long usec) +{ +usleep (usec); +} + +u64 os_get_nsec (void ) +{ +#if defined(CLOCK_MONOTONIC ) && defined(_POSIX_MONOTONIC_CLOCK) +struct timespec tp; +if (EINVAL ==clock_gettime (CLOCK_MONOTONIC , &tp)) { +struct timeval tv; + +gettimeofday (&tv,NULL ); + tp.tv_sec = tv.tv_sec; + tp.tv_nsec = tv.tv_usec *1000 ; + } +return tp.tv_sec *1000000000ULL + tp.tv_nsec; +#else +struct timeval tv; +gettimeofday (&tv,NULL ); +return tv.tv_sec *1000000000ULL + tv.tv_usec *1000 ; +#endif +}
board/sandbox/sandbox/sandbox.c +3 -1
@@ -21,6 +21,8 @@#include <common.h> +#include <os.h> +/* * Pointer to initial global data area *
@@ -34,7 +36,7 @@ void flush_cache(unsigned long start, unsigned long size)ulong get_timer (ulong base) { -return 0 ; +return (os_get_nsec () /1000000 ) - base; }int timer_init (void )
include/os.h +14 -0
@@ -84,3 +84,17 @@ void os_tty_raw(int fd);* \return Pointer to length bytes or NULL on error */ void *os_malloc (size_t length); + +/** +* Access to the usleep function of the os +* +* \param usec Time to sleep in micro seconds +*/ +void os_usleep (unsigned long usec); + +/** +* Gets a monotonic increasing number of nano seconds from the OS +* +* \return A monotonic increasing time scaled in nano seconds +*/ +u64 os_get_nsec (void );
Signature · 1 line
1.7.5.4
PATCH v2 1/1 sandbox: Add timer simulation
Simon: did we decide to start a dedicated sandbox repo ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111129/602e6a1f/attachment.pgp>
PATCH v2 1/1 sandbox: Add timer simulation
+Wolfgang
Hi Mike,
Quoted 5 lines · Mike Frysinger
Acked-by Mike Frysinger <[email protected]>Simon: did we decide to start a dedicated sandbox repo ? -mike
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Wolfgang, do you want a sandbox repo?
Regards,
Simon
PATCH v2 1/1 sandbox: Add timer simulation
Quoted 10 lines · On Tuesday 29 November 2011 11:55:17 Simon Glass wrote:
Quoted 1 line · Mike Frysinger
Simon: did we decide to start a dedicated sandbox repo ?
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Wolfgang, do you want a sandbox repo?
well, one of these two things is going to happen :). i'd prefer a dedicated repo, otherwise i'll start using a branch for it in an existing repo.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111129/6e306364/attachment.pgp>
PATCH v2 1/1 sandbox: Add timer simulation
Hi Mike,
Quoted 10 lines · Mike Frysinger
Quoted 9 lines · On Tuesday 29 November 2011 11:55:17 Simon Glass wrote:
Quoted 1 line · Mike Frysinger
Simon: did we decide to start a dedicated sandbox repo ?
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Quoted 6 lines
Quoted 1 line
Wolfgang, do you want a sandbox repo?
well, one of these two things is going to happen :). ?i'd prefer a dedicated repo, otherwise i'll start using a branch for it in an existing repo. -mike
OK - who can maintain it? Preferably not someone who will be doing a lot of sandbox patches I suppose so that rules me out :-)
Regards,
Simon
PATCH v2 1/1 sandbox: Add timer simulation
Quoted 11 lines · On Tuesday 29 November 2011 15:04:04 Simon Glass wrote:
Quoted 10 lines · Mike Frysinger
Quoted 9 lines · On Tuesday 29 November 2011 11:55:17 Simon Glass wrote:
Quoted 1 line · Mike Frysinger
Simon: did we decide to start a dedicated sandbox repo ?
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
Wolfgang, do you want a sandbox repo?
well, one of these two things is going to happen :). i'd prefer a dedicated repo, otherwise i'll start using a branch for it in an existing repo.
OK - who can maintain it? Preferably not someone who will be doing a lot of sandbox patches I suppose so that rules me out :-)
you or me or both. i'm fine with any of those three options.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111129/82cee95b/attachment.pgp>
PATCH v2 1/1 sandbox: Add timer simulation
Hi Mike,
Quoted 18 lines · Mike Frysinger
Quoted 17 lines · On Tuesday 29 November 2011 15:04:04 Simon Glass wrote:
Quoted 15 lines · Mike Frysinger
Quoted 10 lines · On Tuesday 29 November 2011 11:55:17 Simon Glass wrote:
Quoted 1 line · Mike Frysinger
Simon: did we decide to start a dedicated sandbox repo ?
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Wolfgang, do you want a sandbox repo?
well, one of these two things is going to happen :). ?i'd prefer a dedicated repo, otherwise i'll start using a branch for it in an existing repo.
Quoted 6 lines
Quoted 2 lines
OK - who can maintain it? Preferably not someone who will be doing a lot of sandbox patches I suppose so that rules me out :-)
you or me or both. ?i'm fine with any of those three options. -mike
I vote for you as you already do this for blackfin and I might get back into this and break fourth with a huge bunch of sandbox patches at any moment. But I can help if you want to have a holiday sometime.
Regards,
Simon
PATCH v2 1/1 sandbox: Add timer simulation
Quoted 19 lines · On Tuesday 29 November 2011 16:58:38 Simon Glass wrote:
Quoted 18 lines · Mike Frysinger
Quoted 17 lines · On Tuesday 29 November 2011 15:04:04 Simon Glass wrote:
Quoted 15 lines · Mike Frysinger
Quoted 10 lines · On Tuesday 29 November 2011 11:55:17 Simon Glass wrote:
Quoted 1 line · Mike Frysinger
Simon: did we decide to start a dedicated sandbox repo ?
We didn't decide - it was an idea and I suppose given Wolfgang's email about workload and the early and patch-needy state of sandbox I suspect we should do this. The other option is perhaps for an existing maintainer to collect things to push into staging (if there is such a maintainer interested in sandbox).
Wolfgang, do you want a sandbox repo?
well, one of these two things is going to happen :). i'd prefer a dedicated repo, otherwise i'll start using a branch for it in an existing repo.
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
OK - who can maintain it? Preferably not someone who will be doing a lot of sandbox patches I suppose so that rules me out :-)
you or me or both. i'm fine with any of those three options.
I vote for you as you already do this for blackfin and I might get back into this and break fourth with a huge bunch of sandbox patches at any moment. But I can help if you want to have a holiday sometime.
until we hear back from Wolfgang, i've started a sandbox branch and merged the patches i think should go in now
if there's other pending ones, please highlight them
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111202/4c38118d/attachment.pgp>
PATCH v2 1/1 sandbox: Add timer simulation
In reply to Matthias WeisserQuoted 1 line · On Tuesday 29 November 2011 06:16:40 Matthias Weisser wrote:
Making sleep command work
i've added this to my sandbox branch
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111202/0904defd/attachment.pgp>