1 /* 2 * Copyright (c) 2001 - 2012 Apple 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 /* 25 * Code corresponding to smb_apple.h 26 */ 27 28 #ifndef _NETSMB_SMB_OSDEP_H_ 29 #define _NETSMB_SMB_OSDEP_H_ 30 31 #ifndef PRIVSYM 32 #define PRIVSYM 33 #endif 34 35 #ifndef min 36 #define min(a, b) (((a) < (b)) ? (a) : (b)) 37 #endif 38 39 #define CAST_DOWN(type, addr) (((type)((uintptr_t)(addr)))) 40 #define USER_ADDR_NULL ((user_addr_t)0) 41 #define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)(a_ptr)) 42 43 /* 44 * flags to (BSD) malloc 45 */ 46 #define M_WAITOK 0x0000 47 #define M_NOWAIT 0x0001 48 #define M_ZERO 0x0004 /* bzero the allocation */ 49 50 /* Iconv stuff */ 51 52 /* 53 * Some UTF Related stuff. Will be deleting this once compiled and using 54 * ienup's code. 55 */ 56 /* 57 * UTF-8 encode/decode flags 58 */ 59 #define UTF_REVERSE_ENDIAN 0x01 /* reverse UCS-2 byte order */ 60 #define UTF_NO_NULL_TERM 0x02 /* do not add null termination */ 61 #define UTF_DECOMPOSED 0x04 /* generate fully decomposed UCS-2 */ 62 #define UTF_PRECOMPOSED 0x08 /* generate precomposed UCS-2 */ 63 64 /* 65 * These are actually included in sunddi.h. I am getting compilation 66 * errors right now. Adding the induvidual defines here again from sunddi.h 67 * Unicode encoding conversion functions and their macros. 68 */ 69 #define UCONV_IN_BIG_ENDIAN 0x0001 70 #define UCONV_OUT_BIG_ENDIAN 0x0002 71 #define UCONV_IN_SYSTEM_ENDIAN 0x0004 72 #define UCONV_OUT_SYSTEM_ENDIAN 0x0008 73 #define UCONV_IN_LITTLE_ENDIAN 0x0010 74 #define UCONV_OUT_LITTLE_ENDIAN 0x0020 75 #define UCONV_IGNORE_NULL 0x0040 76 #define UCONV_IN_ACCEPT_BOM 0x0080 77 #define UCONV_OUT_EMIT_BOM 0x0100 78 79 extern int uconv_u8tou16(const uchar_t *, size_t *, uint16_t *, size_t *, int); 80 81 /* Legacy type names for Solaris. */ 82 typedef uint64_t u_int64_t; 83 typedef uint32_t u_int32_t; 84 typedef uint16_t u_int16_t; 85 typedef uint8_t u_int8_t; 86 87 typedef const char *c_caddr_t; 88 typedef uint64_t user_addr_t; 89 typedef ssize_t user_ssize_t; 90 typedef size_t user_size_t; 91 92 #ifdef _FAKE_KERNEL 93 #define ddi_get_cred() CRED() 94 #endif 95 96 /* 97 * Time related calls. 98 */ 99 100 /* BEGIN CSTYLED */ 101 #define timespeccmp(tvp, uvp, cmp) \ 102 (((tvp)->tv_sec == (uvp)->tv_sec) ? \ 103 ((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \ 104 ((tvp)->tv_sec cmp (uvp)->tv_sec)) 105 /* END CSTYLED */ 106 107 #define timespecadd(vvp, uvp) \ 108 { \ 109 (vvp)->tv_sec += (uvp)->tv_sec; \ 110 (vvp)->tv_nsec += (uvp)->tv_nsec; \ 111 if ((vvp)->tv_nsec >= 1000000000) { \ 112 (vvp)->tv_sec++; \ 113 (vvp)->tv_nsec -= 1000000000; \ 114 } \ 115 } 116 117 #define timespecsub(vvp, uvp) \ 118 { \ 119 (vvp)->tv_sec -= (uvp)->tv_sec; \ 120 (vvp)->tv_nsec -= (uvp)->tv_nsec; \ 121 if ((vvp)->tv_nsec < 0) { \ 122 (vvp)->tv_sec--; \ 123 (vvp)->tv_nsec += 1000000000; \ 124 } \ 125 } 126 127 #endif /* _NETSMB_SMB_OSDEP_H_ */ 128