X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/5d5c5d0d5b79ade9a973d55186ffda2638ba2b6e..c7d2c2c6ee645e10cbccdd01c6191873ec77239d:/osfmk/kern/misc_protos.h diff --git a/osfmk/kern/misc_protos.h b/osfmk/kern/misc_protos.h index c66b385fc..010661a22 100644 --- a/osfmk/kern/misc_protos.h +++ b/osfmk/kern/misc_protos.h @@ -1,35 +1,39 @@ /* - * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2011 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_OSREFERENCE_HEADER_START@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. The rights granted to you under the - * License may not be used to create, or enable the creation or - * redistribution of, unlawful or unlicensed copies of an Apple operating - * system, or to circumvent, violate, or enable the circumvention or - * violation of, any terms of an Apple operating system software license - * agreement. - * - * Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and * limitations under the License. - * - * @APPLE_LICENSE_OSREFERENCE_HEADER_END@ + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* * @OSF_COPYRIGHT@ */ +/* + * NOTICE: This file was modified by McAfee Research in 2004 to introduce + * support for mandatory and extensible security protections. This notice + * is included in support of clause 2.2 (b) of the Apple Public License, + * Version 2.0. + */ #ifndef _MISC_PROTOS_H_ #define _MISC_PROTOS_H_ @@ -43,6 +47,13 @@ #include #include +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif /* MIN */ +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif /* MAX */ + /* Set a bit in a bit array */ extern void setbit( int which, @@ -87,7 +98,7 @@ extern int copyinmsg( /* Move arbitrarily-aligned data from a kernel space to user space */ extern int copyout( - const char *kernel_addr, + const void *kernel_addr, user_addr_t user_addr, vm_size_t nbytes); @@ -98,21 +109,41 @@ extern int copyoutmsg( mach_msg_size_t nbytes); /* Invalidate copy window(s) cache */ -extern void inval_copy_windows(thread_t); +extern void inval_copy_windows(thread_t); +extern void copy_window_fault(thread_t, vm_map_t, int); + +extern int copyin_validate(const user_addr_t, uintptr_t, vm_size_t); +extern int copyout_validate(uintptr_t, const user_addr_t, vm_size_t); + +extern int sscanf(const char *input, const char *fmt, ...) __scanflike(2,3); +/* sprintf() is being deprecated. Please use snprintf() instead. */ +extern integer_t sprintf(char *buf, const char *fmt, ...) __deprecated; -extern int sscanf(const char *input, const char *fmt, ...); +extern int printf(const char *format, ...) __printflike(1,2); -extern integer_t sprintf(char *buf, const char *fmt, ...); +#if KERNEL_PRIVATE +int _consume_printf_args(int, ...); +#endif -extern void printf(const char *format, ...); +#if CONFIG_NO_PRINTF_STRINGS +#if KERNEL_PRIVATE +#define printf(x, ...) _consume_printf_args( 0, ## __VA_ARGS__ ) +#else +#define printf(x, ...) do {} while (0) +#endif +#endif -extern void dbugprintf(const char *format, ...); +extern int kdb_printf(const char *format, ...) __printflike(1,2); -extern void kdp_printf(const char *format, ...); +extern int kdb_log(const char *format, ...) __printflike(1,2); + +extern int kdb_printf_unbuffered(const char *format, ...) __printflike(1,2); extern void printf_init(void); +extern int snprintf(char *, size_t, const char *, ...) __printflike(3,4); + extern void log(int level, char *fmt, ...); void @@ -121,13 +152,22 @@ _doprnt( va_list *argp, void (*putc)(char), int radix); + +void +_doprnt_log( + register const char *fmt, + va_list *argp, + void (*putc)(char), + int radix); + int __doprnt( register const char *fmt, - va_list *argp, + va_list argp, void (*putc)(int, void *), void *arg, - int radix); + int radix, + int is_log); extern void safe_gets( char *str, @@ -137,10 +177,18 @@ extern void cnputcusr(char); extern void conslog_putc(char); +extern void cons_putc_locked(char); + extern void consdebug_putc(char); +extern void consdebug_log(char); + +extern void consdebug_putc_unbuffered(char); + extern void cnputc(char); +extern void cnputc_unbuffered(char); + extern int cngetc(void); extern int cnmaygetc(void); @@ -157,11 +205,15 @@ extern void bootstrap_create(void); extern void Debugger( const char * message); +extern void DebuggerWithContext( + unsigned int reason, + void *ctx, + const char *message); + extern void delay( int n); -extern void norma_bootstrap(void); #if DIPC extern boolean_t no_bootstrap_task(void); @@ -173,4 +225,11 @@ extern kern_return_t kernel_set_special_port( int which, ipc_port_t port); +user_addr_t get_useraddr(void); + +/* symbol lookup */ +struct kmod_info_t; + +extern uint64_t early_random(void); + #endif /* _MISC_PROTOS_H_ */