*LOTS* of small changes to make the kernel compatible with Be's KernelExport.h
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1683 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <stage2.h>
|
||||
#include <KernelExport.h>
|
||||
|
||||
/**
|
||||
* @defgroup Timer Timer structures (not architecture specific)
|
||||
@@ -18,66 +19,6 @@
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef struct timer timer;
|
||||
typedef struct qent qent;
|
||||
typedef int32 (*timer_hook)(timer *);
|
||||
|
||||
/**
|
||||
* qent structure
|
||||
*/
|
||||
/**
|
||||
* The BeOS qent structure is probably part of a general double linked list
|
||||
* interface used all over the kernel; a struct is required to have a qent
|
||||
* entry struct as first element, so it can be linked to other elements
|
||||
* easily. The key field is probably just an id, eventually used to order
|
||||
* the list.
|
||||
* Since we don't use this kind of interface, but we have to provide it
|
||||
* to keep compatibility, we can use the qent struct for other purposes...
|
||||
*/
|
||||
struct qent {
|
||||
int64 key; /* We use this as the sched time */
|
||||
qent *next; /* This is used as a pointer to next timer */
|
||||
qent *prev; /* This can be used for callback args */
|
||||
};
|
||||
|
||||
/**
|
||||
* Timer event data structure
|
||||
*/
|
||||
struct timer {
|
||||
/** qent entry for this timer event */
|
||||
qent entry;
|
||||
/** This just holds the timer operating mode (relative/absolute/periodic) */
|
||||
uint16 flags;
|
||||
/** Number of the CPU associated to this timer event */
|
||||
uint16 cpu;
|
||||
/** Hook function to be called on timer expiration */
|
||||
timer_hook hook;
|
||||
/** Expiration time in microseconds */
|
||||
bigtime_t period;
|
||||
};
|
||||
|
||||
/** @defgroup timermodes Timer operating modes
|
||||
* @ingroup Timer
|
||||
* @{
|
||||
*/
|
||||
/** @def B_ONE_SHOT_ABSOLUTE_TIMER the timer will fire once at the system
|
||||
* time specified by period
|
||||
*/
|
||||
/** @def B_ONE_SHOT_RELATIVE_TIMER the timer will fire once in approximately
|
||||
* period microseconds
|
||||
*/
|
||||
/** @def B_PERIODIC_TIMER the timer will fire every period microseconds,
|
||||
* starting in period microseconds
|
||||
*/
|
||||
#define B_ONE_SHOT_ABSOLUTE_TIMER 1
|
||||
#define B_ONE_SHOT_RELATIVE_TIMER 2
|
||||
#define B_PERIODIC_TIMER 3
|
||||
/** @} */
|
||||
|
||||
status_t add_timer(timer *event, timer_hook hook, bigtime_t period, int32 flags);
|
||||
bool cancel_timer(timer *event);
|
||||
void spin(bigtime_t microseconds);
|
||||
|
||||
/** kernel functions */
|
||||
int timer_init(kernel_args *);
|
||||
int timer_interrupt(void);
|
||||
|
||||
Reference in New Issue
Block a user