diff options
author | Michael Brown | 2008-03-10 14:02:53 +0100 |
---|---|---|
committer | Michael Brown | 2008-03-10 14:02:53 +0100 |
commit | 3e781eb87f7b5bfa638f94234bb5e9d64508b0a4 (patch) | |
tree | 5884ac0438320638c846166856a4b54b3564bd23 /src/include | |
parent | [PXE] Work around a buffer-size bug in WinPE (diff) | |
parent | Use plain C in timer_rdtsc for division instead of inline asssembly. (diff) | |
download | ipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.tar.gz ipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.tar.xz ipxe-3e781eb87f7b5bfa638f94234bb5e9d64508b0a4.zip |
Merge branch 'xl0-timer'
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/etherboot.h | 2 | ||||
-rw-r--r-- | src/include/gpxe/dhcp.h | 1 | ||||
-rw-r--r-- | src/include/gpxe/tcp.h | 1 | ||||
-rw-r--r-- | src/include/gpxe/timer.h | 32 | ||||
-rw-r--r-- | src/include/timer.h | 61 | ||||
-rw-r--r-- | src/include/unistd.h | 8 |
6 files changed, 40 insertions, 65 deletions
diff --git a/src/include/etherboot.h b/src/include/etherboot.h index 8d658194..2a465954 100644 --- a/src/include/etherboot.h +++ b/src/include/etherboot.h @@ -12,8 +12,8 @@ #include <stdio.h> #include <unistd.h> #include <strings.h> -#include <latch.h> #include <console.h> +#include <gpxe/timer.h> #include <gpxe/if_arp.h> #include <gpxe/if_ether.h> diff --git a/src/include/gpxe/dhcp.h b/src/include/gpxe/dhcp.h index 9a9ba748..6db0e026 100644 --- a/src/include/gpxe/dhcp.h +++ b/src/include/gpxe/dhcp.h @@ -12,7 +12,6 @@ #include <gpxe/in.h> #include <gpxe/refcnt.h> #include <gpxe/tables.h> -#include <latch.h> struct net_device; struct job_interface; diff --git a/src/include/gpxe/tcp.h b/src/include/gpxe/tcp.h index e2753120..264ec29b 100644 --- a/src/include/gpxe/tcp.h +++ b/src/include/gpxe/tcp.h @@ -9,7 +9,6 @@ * */ -#include "latch.h" #include <gpxe/tcpip.h> /** diff --git a/src/include/gpxe/timer.h b/src/include/gpxe/timer.h new file mode 100644 index 00000000..4a4cf5b2 --- /dev/null +++ b/src/include/gpxe/timer.h @@ -0,0 +1,32 @@ +#ifndef GPXE_TIMER_H +#define GPXE_TIMER_H + +#include <stddef.h> + +typedef uint32_t tick_t; + +#define MSECS_IN_SEC (1000) +#define USECS_IN_SEC (1000*1000) +#define USECS_IN_MSEC (1000) + +#define TICKS_PER_SEC USECS_IN_SEC + +tick_t currticks(void); + +void generic_currticks_udelay(unsigned int usecs); + +struct timer { + /* Returns zero on successful initialisation. */ + int (*init) (void); + + /* Return the current time, int mictoseconds since the beginning. */ + tick_t (*currticks) (void); + + /* Sleep for a few useconds. */ + void (*udelay) (unsigned int useconds); +}; + +#define __timer(order) __table (struct timer, timers, order) + +#endif /* GPXE_TIMER_H */ + diff --git a/src/include/timer.h b/src/include/timer.h deleted file mode 100644 index 0044d0c0..00000000 --- a/src/include/timer.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Defines for routines to implement a low-overhead timer for drivers */ - - /* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2, or (at - * your option) any later version. - */ - -#ifndef TIMER_H -#define TIMER_H - -/* Ports for the 8254 timer chip */ -#define TIMER2_PORT 0x42 -#define TIMER_MODE_PORT 0x43 - -/* Meaning of the mode bits */ -#define TIMER0_SEL 0x00 -#define TIMER1_SEL 0x40 -#define TIMER2_SEL 0x80 -#define READBACK_SEL 0xC0 - -#define LATCH_COUNT 0x00 -#define LOBYTE_ACCESS 0x10 -#define HIBYTE_ACCESS 0x20 -#define WORD_ACCESS 0x30 - -#define MODE0 0x00 -#define MODE1 0x02 -#define MODE2 0x04 -#define MODE3 0x06 -#define MODE4 0x08 -#define MODE5 0x0A - -#define BINARY_COUNT 0x00 -#define BCD_COUNT 0x01 - -/* Timers tick over at this rate */ -#define CLOCK_TICK_RATE 1193180U -#define TICKS_PER_MS (CLOCK_TICK_RATE/1000) - -/* Parallel Peripheral Controller Port B */ -#define PPC_PORTB 0x61 - -/* Meaning of the port bits */ -#define PPCB_T2OUT 0x20 /* Bit 5 */ -#define PPCB_SPKR 0x02 /* Bit 1 */ -#define PPCB_T2GATE 0x01 /* Bit 0 */ - -/* Ticks must be between 0 and 65535 (0 == 65536) - because it is a 16 bit counter */ -extern void load_timer2(unsigned int ticks); -extern inline int timer2_running(void); -extern void waiton_timer2(unsigned int ticks); - -extern void ndelay(unsigned int nsecs); -extern void udelay(unsigned int usecs); -extern void mdelay(unsigned int msecs); - - -#endif /* TIMER_H */ diff --git a/src/include/unistd.h b/src/include/unistd.h index 35dcf584..7c44a0ce 100644 --- a/src/include/unistd.h +++ b/src/include/unistd.h @@ -4,7 +4,7 @@ #include <stddef.h> #include <stdarg.h> -extern unsigned int sleep ( unsigned int seconds ); +unsigned int sleep ( unsigned int seconds ); extern int execv ( const char *command, char * const argv[] ); /** @@ -22,4 +22,10 @@ extern int execv ( const char *command, char * const argv[] ); rc; \ } ) +void udelay(unsigned int usecs); +void mdelay(unsigned int msecs); + +#define usleep(x) udelay(x) + + #endif /* _UNISTD_H */ |