]>
git.saurik.com Git - apple/xnu.git/blob - osfmk/kern/misc_protos.h
   2  * Copyright (c) 2000-2016 Apple Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   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. The rights granted to you under the License 
  10  * may not be used to create, or enable the creation or redistribution of, 
  11  * unlawful or unlicensed copies of an Apple operating system, or to 
  12  * circumvent, violate, or enable the circumvention or violation of, any 
  13  * terms of an Apple operating system software license agreement. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  18  * The Original Code and all software distributed under the License are 
  19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  23  * Please see the License for the specific language governing rights and 
  24  * limitations under the License. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  32  * NOTICE: This file was modified by McAfee Research in 2004 to introduce 
  33  * support for mandatory and extensible security protections.  This notice 
  34  * is included in support of clause 2.2 (b) of the Apple Public License, 
  38 #ifndef _MISC_PROTOS_H_ 
  39 #define _MISC_PROTOS_H_ 
  43 #include <machine/setjmp.h> 
  44 #include <mach/boolean.h> 
  45 #include <mach/message.h> 
  46 #include <mach/machine/vm_types.h> 
  47 #include <ipc/ipc_types.h> 
  48 #include <kern/debug.h> 
  51 #define MIN(a,b) (((a)<(b))?(a):(b)) 
  54 #define MAX(a,b) (((a)>(b))?(a):(b)) 
  57 /* Set a bit in a bit array */ 
  62 /* Clear a bit in a bit array */ 
  67 /* Find the first set bit in a bit array */ 
  73         unsigned long long mask
); 
  75 /* Find the last set bit in a bit array */ 
  79         unsigned long long mask
); 
  82  * Test if indicated bit is set in bit string. 
  88 /* Move arbitrarily-aligned data from a user space to kernel space */ 
  90         const user_addr_t   user_addr
, 
  94 /* Move an aligned 32 or 64-bit word from user space to kernel space 
  95  * using a single read instruction 
  97  * when reading a 32-bit word, the value is 0-extended into the kernel space 
  98  * 64-bit buffer passed as `kernel_addr` 
  99  * (think `*kernel_addr = *(uint32_t *)user_addr`) 
 101 extern int copyin_word( 
 102         const user_addr_t   user_addr
, 
 103         uint64_t            *kernel_addr
, 
 106 /* Move a NUL-terminated string from a user space to kernel space */ 
 107 extern int copyinstr( 
 108         const user_addr_t   user_addr
, 
 113 /* Move arbitrarily-aligned data from a user space to kernel space */ 
 114 extern int copyinmsg( 
 115         const user_addr_t   user_addr
, 
 117         mach_msg_size_t     nbytes
); 
 119 /* Move arbitrarily-aligned data from a kernel space to user space */ 
 121         const void      *kernel_addr
, 
 122         user_addr_t     user_addr
, 
 125 /* Move arbitrarily-aligned data from a kernel space to user space */ 
 126 extern int copyoutmsg( 
 127         const char      *kernel_addr
, 
 128         user_addr_t     user_addr
, 
 129         mach_msg_size_t nbytes
); 
 131 /* Invalidate copy window(s) cache */ 
 132 extern void inval_copy_windows(thread_t
); 
 133 extern void copy_window_fault(thread_t
, vm_map_t
, int); 
 135 extern int copyin_validate(const user_addr_t
, uintptr_t, vm_size_t
); 
 136 extern int copyout_validate(uintptr_t, const user_addr_t
, vm_size_t
); 
 138 extern int sscanf(const char *input
, const char *fmt
, ...) __scanflike(2,3); 
 140 /* sprintf() is being deprecated. Please use snprintf() instead. */  
 141 extern integer_t 
sprintf(char *buf
, const char *fmt
, ...) __deprecated
; 
 143 extern int printf(const char *format
, ...) __printflike(1,2); 
 144 extern int vprintf(const char *format
, va_list ap
); 
 147 int     _consume_printf_args(int, ...); 
 150 #if CONFIG_NO_PRINTF_STRINGS 
 152 #define printf(x, ...)  _consume_printf_args( 0, ## __VA_ARGS__ ) 
 154 #define printf(x, ...)  do {} while (0) 
 158 extern int paniclog_append_noflush(const char *format
, ...) __printflike(1,2); 
 160 extern int kdb_printf(const char *format
, ...) __printflike(1,2); 
 162 extern int kdb_log(const char *format
, ...) __printflike(1,2); 
 164 extern int kdb_printf_unbuffered(const char *format
, ...) __printflike(1,2); 
 166 extern void printf_init(void); 
 168 extern int snprintf(char *, size_t, const char *, ...) __printflike(3,4); 
 170 extern void log(int level
, char *fmt
, ...); 
 190         void                    (*putc
)(int, void *), 
 195 extern void safe_gets( 
 199 extern void cnputcusr(char); 
 201 extern void cnputsusr(char *, int); 
 203 extern void conslog_putc(char); 
 205 extern void cons_putc_locked(char); 
 207 extern void consdebug_putc(char); 
 209 extern void consdebug_log(char); 
 211 extern void consdebug_putc_unbuffered(char); 
 213 extern void cnputc(char); 
 215 extern void cnputc_unbuffered(char); 
 217 extern void console_write(char *, int); 
 219 extern void console_suspend(void); 
 221 extern void console_resume(void); 
 223 extern int cngetc(void); 
 225 extern int cnmaygetc(void); 
 234 extern void bootstrap_create(void); 
 237 extern boolean_t        
no_bootstrap_task(void); 
 238 extern ipc_port_t       
get_root_master_device_port(void); 
 241 extern kern_return_t    
kernel_set_special_port( 
 242                 host_priv_t     host_priv
, 
 246 extern kern_return_t    
kernel_get_special_port( 
 247                 host_priv_t     host_priv
, 
 251 user_addr_t 
get_useraddr(void); 
 256 extern uint64_t early_random(void); 
 258 #endif  /* _MISC_PROTOS_H_ */