From fde790296f1817e463cb73ec5d3b91359bfbd921 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwinge@gnu.org>
Date: Mon, 5 Feb 2007 20:34:56 +0000
Subject: 2007-02-05  Thomas Schwinge  <tschwinge@gnu.org>

* kern/time_out.h: Remove file after having installed the missing bits
	in...
	* kern/mach_clock.h: ... here.
---
 kern/mach_clock.h | 63 +++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 50 insertions(+), 13 deletions(-)

(limited to 'kern/mach_clock.h')

diff --git a/kern/mach_clock.h b/kern/mach_clock.h
index e6f746b8..93237aaf 100644
--- a/kern/mach_clock.h
+++ b/kern/mach_clock.h
@@ -1,6 +1,5 @@
 /*
- *
- * Copyright (C) 2006 Free Software Foundation, Inc.
+ * Copyright (C) 2006, 2007 Free Software Foundation, Inc.
  *
  * 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
@@ -16,34 +15,72 @@
  * along with this program; if not, write to the Free Software
  * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * Author: Barry deFreese.
- */
-/*
- *
+ * Author: Barry deFreese and others.
  */
 
 #ifndef _KERN_MACH_CLOCK_H_
 #define _KERN_MACH_CLOCK_H_
 
-#include <sys/types.h>
-#include <kern/time_out.h>
+/*
+ * Mach time-out and time-of-day facility.
+ */
+
 #include <mach/machine/kern_return.h>
+#include <mach/time_value.h>
+#include <kern/host.h>
+#include <kern/queue.h>
+
+
+/* Timers in kernel.  */
+extern unsigned long	elapsed_ticks;	/* number of ticks elapsed since bootup */
+extern int		hz;		/* number of ticks per second */
+extern int		tick;		/* number of usec per tick */
+
+
+/* Time-out element.  */
+struct timer_elt {
+	queue_chain_t	chain;		/* chain in order of expiration */
+	int		(*fcn)();	/* function to call */
+	char *		param;		/* with this parameter */
+	unsigned long	ticks;		/* expiration time, in ticks */
+	int		set;		/* unset | set | allocated */
+};
+#define	TELT_UNSET	0		/* timer not set */
+#define	TELT_SET	1		/* timer set */
+#define	TELT_ALLOC	2		/* timer allocated from pool */
+
+typedef	struct timer_elt	timer_elt_data_t;
+typedef	struct timer_elt	*timer_elt_t;
+
 
 extern void clock_interrupt(
    int usec,
    boolean_t usermode,
    boolean_t basepri);
 
-extern void softclock();
+extern void softclock (void);
 
+/* For `private' timer elements.  */
 extern void set_timeout(
    timer_elt_t telt,
    unsigned int interval);
-
 extern boolean_t reset_timeout(timer_elt_t telt);
 
-extern void init_timeout();
+#define	set_timeout_setup(telt,fcn,param,interval)	\
+	((telt)->fcn = (fcn),				\
+	 (telt)->param = (param),			\
+	 (telt)->private = TRUE,			\
+	set_timeout((telt), (interval)))
+
+#define	reset_timeout_check(t)				\
+	MACRO_BEGIN					\
+	if ((t)->set)					\
+	    reset_timeout((t));				\
+	MACRO_END
 
+extern void init_timeout (void);
+
+/* Read the current time into STAMP.  */
 extern void record_time_stamp (time_value_t *stamp);
 
 extern kern_return_t host_get_time(
@@ -59,10 +96,10 @@ extern kern_return_t host_adjust_time(
    time_value_t new_adjustment,
    time_value_t *old_adjustment);
 
-extern void mapable_time_init();
+extern void mapable_time_init (void);
 
+/* For public timer elements.  */
 extern void timeout(int (*fcn)(), char *param, int interval);
-
 extern boolean_t untimeout(int (*fcn)(), char *param);
 
 #endif /* _KERN_MACH_CLOCK_H_ */
-- 
cgit v1.2.3