source: GPL/branches/uniaud32-linux-3.2.102/lib32/timer.c@ 611

Last change on this file since 611 was 445, checked in by Paul Smedley, 16 years ago

More code tidyups, remove some unnecessary #ifndef TARGET_OS2 by adding some more stub functions

File size: 4.8 KB
Line 
1/* $Id: timer.c,v 1.1.1.1 2003/07/02 13:57:04 eleph Exp $ */
2/*
3 * OS/2 implementation of Linux timer kernel functions
4 *
5 * (C) 2000-2002 InnoTek Systemberatung GmbH
6 * (C) 2000-2001 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program; if not, write to the Free
20 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
21 * USA.
22 *
23 */
24
25#include "linux.h"
26#include <linux/init.h>
27#include <linux/poll.h>
28#include <asm/uaccess.h>
29#include <asm/hardirq.h>
30#include <asm/io.h>
31#include <linux/time.h>
32
33#define LINUX
34#include <ossidc.h>
35#include <irqos2.h>
36#include <dbgos2.h>
37
38static long jiffiems = 1000/HZ;
39static long lasttime = 0;
40unsigned long volatile jiffies = 0;
41
42//******************************************************************************
43//Timer handler that is called on each timer tick (32 times/second)
44//******************************************************************************
45void ALSA_TIMER()
46{
47 long delta, newtime, remainder;
48
49 newtime = os2gettimemsec();
50 delta = newtime - lasttime;
51
52 jiffies += delta/jiffiems;
53 remainder = delta%jiffiems;
54
55 lasttime = newtime - remainder;
56}
57//******************************************************************************
58//timeout is in 'jiffies', linux talk for units of 1000/HZ ms
59//******************************************************************************
60signed long schedule_timeout(signed long timeout)
61{
62 dprintf2(("schedule_timeout %d jiffies %x", timeout, jiffies));
63 mdelay(timeout*jiffiems);
64 return 0;
65}
66//******************************************************************************
67//iodelay is in 500ns units
68void iodelay32(unsigned long);
69#pragma aux iodelay32 parm nomemory [ecx] modify nomemory exact [eax ecx];
70//******************************************************************************
71//microsecond delay
72//******************************************************************************
73void __udelay(unsigned long usecs)
74{
75 if(usecs == 0) {
76 DebugInt3();
77 usecs = 1;
78 }
79 iodelay32(usecs*2);
80}
81//******************************************************************************
82//millisecond delay
83//******************************************************************************
84void mdelay(unsigned long msecs)
85{
86 if(msecs == 0) {
87 DebugInt3();
88 msecs = 1;
89 }
90 iodelay32(msecs*2*1000);
91}
92//******************************************************************************
93//******************************************************************************
94void do_gettimeofday(struct timeval *tv)
95{
96#if 0
97 tv->tv_sec = 0; //os2gettimesec();
98 tv->tv_usec = os2gettimemsec() * 1000;
99#else /* r.ihle patch */
100 unsigned u = os2gettimemsec();
101 tv->tv_sec = u / 1000;
102 tv->tv_usec = (u % 1000) * 1000;
103#endif
104}
105//******************************************************************************
106//******************************************************************************
107void add_timer(struct timer_list * timer)
108{
109
110}
111//******************************************************************************
112//******************************************************************************
113int del_timer(struct timer_list * timer)
114{
115 return 0;
116}
117//******************************************************************************
118/*
119 * mod_timer is a more efficient way to update the expire field of an
120 * active timer (if the timer is inactive it will be activated)
121 * mod_timer(a,b) is equivalent to del_timer(a); a->expires = b; add_timer(a)
122 */
123void mod_timer(struct timer_list *timer, unsigned long expires)
124{
125
126}
127//******************************************************************************
128//******************************************************************************
129#include <linux/delay.h>
130void msleep(unsigned int msecs)
131{
132 unsigned long timeout = ((msecs) * HZ + 999) / 1000;
133
134 while (timeout) {
135 set_current_state(TASK_UNINTERRUPTIBLE);
136 timeout = schedule_timeout(timeout);
137 }
138}
139
140//******************************************************************************
141//******************************************************************************
Note: See TracBrowser for help on using the repository browser.