*BSD News Article 11130


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA1284 ; Tue, 23 Feb 93 14:33:53 EST
Newsgroups: comp.unix.bsd
Path: sserve!manuel.anu.edu.au!munnari.oz.au!uunet!spool.mu.edu!wupost!csus.edu!netcom.com!jmonroy
From: jmonroy@netcom.com (Jesus Monroy Jr)
Subject: [386BSD] device drivers & RTC (Real Time Clock)
Message-ID: <1993Feb14.005348.13989@netcom.com>
Keywords: 386bsd device driver RTC real time clock  
Organization: Netcom - Online Communication Services  (408 241-9760 guest) 
Date: Sun, 14 Feb 1993 00:53:48 GMT
Lines: 64

-------------------------------------------
This should not be a resend, but I thinks I don't know.
-------------------------------------------

wjolitz@cardio.ucsf.edu
 
[386bsd]:NEED Real-Time-Clock working
 
                386bsd is running on one leg, but at this time I have
        neither the time (time, time, time, S^| ) nor the know-how to
        fix the problem.  The problem is that the CMOS RTC (Real Time
        Clock) is not being utilized. At the present only the 8259 or
        80255 interrupt timer chip are running the time loop, but with a
        second clock running at a different frequency, a more effective
        OS will result.
 
                On the MS-DOS/IBM system Int 8 handles the timer tick,
        mostly for foreground timing - like the keyboard buffer polling
        done by MS-DOS.  Int 8 runs at approx. 18 ticks per second.  The
        RTC - operates through Int 70h and primarily signals semaphores,
        flag bits, and the TOD (Time of Day) counter. The semahpres &
        flags inturn signal timeout and frequency operation polling.
        Int 70h runs at about 1000 ticks per second.
 
                What all this leads to is the need for a working RTC and
        support_calls(). The routines I beleive that are needed include:
 
        get_tick_count()        /* get the current tick_count */
        delay()                 /* simply wait a predetermined tick count */
        event_wait()            /* initiate a semaphored event wait
                                   ( or toggle a flag bit in a address)
                                 */
        cancel_event_wait()     /* cancel the event_wait request */
 
        setup_alarm_routine()   /* pass routine an address to
                                   start a process in 24hrs plus
                                 */
        set_alarm()             /* set alarm 24+hrs. event */
        reset_alarm()           /* cancel alarm 24+hrs. event */
 
        Except for setup_alarm_routine() and set_alarm() all calls
        should have top priority on the event que. Resolution should be
        1000 or 10,000 ticks per second.
 
                Applications may use the event_wait() to check for user
        response ot polling with the toggle flag.  Low-level I/O can use
        event_wait() for timeout procedure via the semaphore event. Cron
        and network protocols can use the set_alarm().
 
                To do this work one will need the "IBM: Technical
        Reference Personal Computer AT", part# 6280070.
        It may also be called "The Personal Computer Hardware Reference
        Library".
 
                DELAY() is a hideous method of programming. Sleep() is
        another bizzare concoction. Both show the blind patches
        programmers used to make on computers, becuase EE's had not
        enough forethought to consider real problems in a multitasking
        OS.  If I had my way, I would have multipule counters on a CPU,
        16 or 20, like  microcontrollers have now, such as the 68hc11,
        the 8052, and others.