Annotation of coherent/b/kernel/ldrv/dmalock.c, revision 1.1.1.1

1.1       root        1: /* $Header: /kernel/kersrc/ldrv/RCS/dmalock.c,v 1.1 92/07/17 15:27:50 bin Exp Locker: bin $
                      2:  *
                      3:  *     The  information  contained herein  is a trade secret  of INETCO
                      4:  *     Systems, Ltd, and is  confidential information.   It is provided
                      5:  *     under a license agreement,  and may be copied or disclosed  only
                      6:  *     under  the  terms  of  that  agreement.    Any  reproduction  or
                      7:  *     disclosure  of  this   material   without  the  express  written
                      8:  *     authorization of INETCO Systems, Ltd. or persuant to the license
                      9:  *     agreement is unlawful.
                     10:  *
                     11:  *     Copyright (c) 1989
                     12:  *     An unpublished work by INETCO Systems, Ltd.
                     13:  *     All rights reserved.
                     14:  *
                     15:  * $Description: $
                     16:  *     Routines to lock/unlock the DMA controller chip from a loadable driver.
                     17:  *
                     18:  * $Author: bin $
                     19:  *
                     20:  * $Creation: June 29, 1989 $
                     21:  *
                     22:  * $Log:       dmalock.c,v $
                     23:  * Revision 1.1  92/07/17  15:27:50  bin
                     24:  * Initial revision
                     25:  * 
                     26:  * Revision 1.1        89/06/30  16:29:52      src
                     27:  * Initial revision
                     28:  * 
                     29:  */
                     30: 
                     31: #include <sys/coherent.h>
                     32: 
                     33: typedef void (* vfp_t)();              /* Void function pointer type.       */
                     34: 
                     35: /*
                     36:  * External functions.
                     37:  */
                     38: extern void Kdmalock();
                     39: extern void Kdmaunlock();
                     40: extern void Kldtimcall();
                     41: extern saddr_t getcs();
                     42: 
                     43: /*
                     44:  * int
                     45:  * dmalock( tp, fun, arg )
                     46:  * TIM * tp;
                     47:  * vfp_t fun;
                     48:  * int  arg;
                     49:  *
                     50:  *     Inputs: tp  = Deferred function structure pointer.
                     51:  *             fun = Function to call if request is deferred.
                     52:  *             arg = Argument to pass to function.
                     53:  *
                     54:  *     Action: Calls kernel dmalock() routine.
                     55:  *
                     56:  *     Return: 0 = Lock granted or -1 = Lock deferred.
                     57:  *
                     58:  *     Notes:  DMA controller locking was introduced to cure a bug on the
                     59:  *             NCR DMA controller, where overlapped DMA caused problems.
                     60:  *             No action is taken if DMA locking is disabled.
                     61:  */
                     62: 
                     63: int
                     64: dmalock( tp, fun, arg )
                     65: register TIM  * tp;
                     66: vfp_t          fun;
                     67: int            arg;
                     68: {
                     69:        /*
                     70:         * Define loadable driver interface.
                     71:         * Kldtimcall will be invoked when a deferred function is executed.
                     72:         * It will in turn invoke FP_SEL(tp->t_ldrv):4 (the calling drivers
                     73:         * function call entry point), passing FP_OFF(tp->t_ldrv) (the function
                     74:         * to call) in AX.
                     75:         */
                     76:        FP_SEL(tp->t_ldrv) = getcs();
                     77:        FP_OFF(tp->t_ldrv) = fun;
                     78:        return( kcall( Kdmalock, tp, Kldtimcall, arg ) );
                     79: }
                     80: 
                     81: /*
                     82:  * void
                     83:  * dmaunlock( tp )
                     84:  * TIM * tp;
                     85:  *
                     86:  *     Inputs: tp = Deferred function structure pointer.
                     87:  *
                     88:  *     Action: Calls the kernel dmaunlock().
                     89:  */
                     90: 
                     91: void
                     92: dmaunlock( tp )
                     93: register TIM * tp;
                     94: {
                     95:        kcall( Kdmaunlock, tp );
                     96: }
                     97: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.