The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/osfmk/ppc/cpu_data.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /*
   26  * @OSF_COPYRIGHT@
   27  * 
   28  */
   29 
   30 #ifndef PPC_CPU_DATA
   31 #define PPC_CPU_DATA
   32 
   33 typedef struct
   34 {
   35         int             preemption_level;
   36         int             simple_lock_count;
   37         int             interrupt_level;
   38 } cpu_data_t;
   39 
   40 #define disable_preemption                      _disable_preemption
   41 #define enable_preemption                       _enable_preemption
   42 #define enable_preemption_no_check              _enable_preemption_no_check
   43 #define mp_disable_preemption                   _disable_preemption
   44 #define mp_enable_preemption                    _enable_preemption
   45 #define mp_enable_preemption_no_check           _enable_preemption_no_check
   46 
   47 extern __inline__ thread_act_t current_act(void) 
   48 {
   49         thread_act_t act;
   50         __asm__ volatile("mfsprg %0,1" : "=r" (act));  
   51         return act;
   52 };
   53 
   54 /*
   55  *      Note that the following function is ONLY guaranteed when preemption or interrupts are disabled
   56  */
   57 extern __inline__ struct per_proc_info *getPerProc(void) 
   58 {
   59         struct per_proc_info *perproc;
   60         __asm__ volatile("mfsprg %0,0" : "=r" (perproc));  
   61         return perproc;
   62 };
   63 
   64 #define current_thread()        current_act()->thread
   65 
   66 extern void                                     set_machine_current_act(thread_act_t);
   67 
   68 extern int                                      get_preemption_level(void);
   69 extern void                                     disable_preemption(void);
   70 extern void                                     enable_preemption(void);
   71 extern void                                     enable_preemption_no_check(void);
   72 extern void                                     mp_disable_preemption(void);
   73 extern void                                     mp_enable_preemption(void);
   74 extern void                                     mp_enable_preemption_no_check(void);
   75 extern int                                      get_simple_lock_count(void);
   76 
   77 #endif  /* PPC_CPU_DATA */

Cache object: cbdcd673c70daee94eb3ede3fb11a4ea


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.