X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..7e4a7d3939db04e70062ae6c7bf24b8c8b2f5a7c:/osfmk/kern/misc_protos.h diff --git a/osfmk/kern/misc_protos.h b/osfmk/kern/misc_protos.h index 181bb0fed..0b7d5a0cc 100644 --- a/osfmk/kern/misc_protos.h +++ b/osfmk/kern/misc_protos.h @@ -1,27 +1,39 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * 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. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * 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 OR NON-INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * 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_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_ @@ -33,6 +45,14 @@ #include #include #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( @@ -57,73 +77,70 @@ extern int testbit( int which, int *bitmap); -/* Move arbitrarily-aligned data from one array to another */ -extern void bcopy( - const char *from, - char *to, - vm_size_t nbytes); - -/* Move overlapping, arbitrarily aligned data from one array to another */ -/* Not present on all ports */ -extern void ovbcopy( - const char *from, - char *to, - vm_size_t nbytes); - -extern int bcmp( - const char *a, - const char *b, - vm_size_t len); - -/* Zero an arbitrarily aligned array */ -extern void bzero( - char *from, - vm_size_t nbytes); - /* Move arbitrarily-aligned data from a user space to kernel space */ -extern boolean_t copyin( - const char *user_addr, - char *kernel_addr, - vm_size_t nbytes); +extern int copyin( + const user_addr_t user_addr, + char *kernel_addr, + vm_size_t nbytes); /* Move a NUL-terminated string from a user space to kernel space */ -extern boolean_t copyinstr( - const char *user_addr, - char *kernel_addr, - vm_size_t max, - vm_size_t *actual); +extern int copyinstr( + const user_addr_t user_addr, + char *kernel_addr, + vm_size_t max, + vm_size_t *actual); /* Move arbitrarily-aligned data from a user space to kernel space */ -extern boolean_t copyinmsg( - const char *user_addr, - char *kernel_addr, - mach_msg_size_t nbytes); +extern int copyinmsg( + const user_addr_t user_addr, + char *kernel_addr, + mach_msg_size_t nbytes); /* Move arbitrarily-aligned data from a kernel space to user space */ -extern boolean_t copyout( - const char *kernel_addr, - char *user_addr, - vm_size_t nbytes); +extern int copyout( + const void *kernel_addr, + user_addr_t user_addr, + vm_size_t nbytes); /* Move arbitrarily-aligned data from a kernel space to user space */ -extern boolean_t copyoutmsg( - const char *kernel_addr, - char *user_addr, +extern int copyoutmsg( + const char *kernel_addr, + user_addr_t user_addr, mach_msg_size_t nbytes); -extern int sscanf(const char *input, const char *fmt, ...); +/* Invalidate copy window(s) cache */ +extern void inval_copy_windows(thread_t); -extern integer_t sprintf(char *buf, const char *fmt, ...); +extern int sscanf(const char *input, const char *fmt, ...) __scanflike(2,3); -extern void printf(const char *format, ...); +/* sprintf() is being deprecated. Please use snprintf() instead. */ +extern integer_t sprintf(char *buf, const char *fmt, ...) __deprecated; -extern void kdp_printf(const char *format, ...); +extern int printf(const char *format, ...) __printflike(1,2); -extern void printf_init(void); +#if KERNEL_PRIVATE +int _consume_printf_args(int, ...); +#endif -extern void panic(const char *string, ...); +#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, ...) __printflike(1,2); + +extern int kdb_printf(const char *format, ...) __printflike(1,2); + +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 void panic_init(void); +extern int snprintf(char *, size_t, const char *, ...) __printflike(3,4); extern void log(int level, char *fmt, ...); @@ -136,7 +153,7 @@ _doprnt( int __doprnt( register const char *fmt, - va_list *argp, + va_list argp, void (*putc)(int, void *), void *arg, int radix); @@ -151,8 +168,14 @@ extern void conslog_putc(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); @@ -166,36 +189,27 @@ extern int _longjmp( extern void bootstrap_create(void); -extern void halt_cpu(void); - -extern void halt_all_cpus( - boolean_t reboot); - extern void Debugger( const char * message); extern void delay( int n); -extern char *machine_boot_info( - char *buf, - vm_size_t buf_len); -/* - * Machine-dependent routine to fill in an array with up to callstack_max - * levels of return pc information. - */ -extern void machine_callstack( - natural_t *buf, - vm_size_t callstack_max); - -extern void consider_machine_collect(void); - -extern void norma_bootstrap(void); #if DIPC extern boolean_t no_bootstrap_task(void); extern ipc_port_t get_root_master_device_port(void); #endif /* DIPC */ +extern kern_return_t kernel_set_special_port( + host_priv_t host_priv, + int which, + ipc_port_t port); + +user_addr_t get_useraddr(void); + +/* symbol lookup */ +struct kmod_info_t; + #endif /* _MISC_PROTOS_H_ */