zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

OSCacheControl.h (2344B) - Raw


      1 /*
      2  * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
      3  *
      4  * @APPLE_LICENSE_HEADER_START@
      5  * 
      6  * This file contains Original Code and/or Modifications of Original Code
      7  * as defined in and that are subject to the Apple Public Source License
      8  * Version 2.0 (the 'License'). You may not use this file except in
      9  * compliance with the License. Please obtain a copy of the License at
     10  * http://www.opensource.apple.com/apsl/ and read it before using this
     11  * file.
     12  * 
     13  * The Original Code and all software distributed under the License are
     14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
     15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
     16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
     18  * Please see the License for the specific language governing rights and
     19  * limitations under the License.
     20  * 
     21  * @APPLE_LICENSE_HEADER_END@
     22  */
     23 
     24 #ifndef _OS_CACHE_CONTROL_H_
     25 #define _OS_CACHE_CONTROL_H_
     26 
     27 #include    <stddef.h>
     28 #include    <sys/cdefs.h>
     29 #include    <stdint.h>
     30 #include    <Availability.h>
     31 
     32 __BEGIN_DECLS
     33 
     34 
     35 /* Functions performed by sys_cache_control(): */
     36 
     37 /* Prepare memory for execution.  This should be called
     38  * after writing machine instructions to memory, before
     39  * executing them.  It syncs the dcache and icache.
     40  * On IA32 processors this function is a NOP, because
     41  * no synchronization is required.
     42  */
     43 #define	kCacheFunctionPrepareForExecution	1
     44 
     45 /* Flush data cache(s).  This ensures that cached data 
     46  * makes it all the way out to DRAM, and then removes
     47  * copies of the data from all processor caches.
     48  * It can be useful when dealing with cache incoherent
     49  * devices or DMA.
     50  */
     51 #define	kCacheFunctionFlushDcache	2
     52 
     53 
     54 /* perform one of the above cache functions: */
     55 int	sys_cache_control( int function, void *start, size_t len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
     56  
     57 /* equivalent to sys_cache_control(kCacheFunctionPrepareForExecution): */
     58 void	sys_icache_invalidate( void *start, size_t len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
     59 
     60 /* equivalent to sys_cache_control(kCacheFunctionFlushDcache): */
     61 void	sys_dcache_flush( void *start, size_t len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
     62 
     63 
     64 __END_DECLS
     65 
     66 #endif /* _OS_CACHE_CONTROL_H_ */