Annotation of kernel/driverkit/ppc/IOSupport.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25:  /*
                     26:  * Copyright (c) 1997 Apple Computer, Inc.
                     27:  *
                     28:  *
                     29:  */
                     30: 
                     31: #include <diagnostic.h>
                     32: #import <mach/mach_types.h>
                     33: #include <machine/setjmp.h>
                     34: #import <machine/label_t.h>
                     35: 
                     36: /* Call the TVector with thread exception recovery */
                     37: 
                     38: extern int
                     39: CallTVector_NoRecover(
                     40:     void * p1, void * p2, void * p3, void * p4, void * p5, void * p6,
                     41:     void * entry );
                     42: 
                     43: int
                     44: CallTVector(
                     45:     void * p1, void * p2, void * p3, void * p4, void * p5, void * p6,
                     46:     void * entry )
                     47: {
                     48:     label_t    jmpbuf;
                     49:     int                err;
                     50:        vm_offset_t tmpbuf = current_thread()->recover;
                     51: 
                     52: #if DIAGNOSTIC
                     53:        if(tmpbuf)
                     54:                kprintf("CallTVector() ****** NESTED SETJUMP ******\n");
                     55: #endif /* DIAGNOSTIC */
                     56: 
                     57:     if (setjmp(&jmpbuf)) {
                     58:         err = -999;
                     59:     } else {
                     60: 
                     61:         current_thread()->recover = (vm_offset_t)&jmpbuf;
                     62:         err = CallTVector_NoRecover( p1, p2, p3, p4, p5, p6, entry);
                     63:     }
                     64:     current_thread()->recover = (vm_offset_t)tmpbuf;
                     65:     return( err);
                     66: }
                     67: 

unix.superglobalmegacorp.com

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