michael@0: /* michael@0: * kernel_compat.h michael@0: * michael@0: * Compatibility stuff for building in kernel context where standard michael@0: * C headers and library are not available. michael@0: * michael@0: * Marcus Sundberg michael@0: * Ingate Systems AB michael@0: */ michael@0: /* michael@0: * michael@0: * Copyright(c) 2005 Ingate Systems AB michael@0: * All rights reserved. michael@0: * michael@0: * Redistribution and use in source and binary forms, with or without michael@0: * modification, are permitted provided that the following conditions michael@0: * are met: michael@0: * michael@0: * Redistributions of source code must retain the above copyright michael@0: * notice, this list of conditions and the following disclaimer. michael@0: * michael@0: * Redistributions in binary form must reproduce the above michael@0: * copyright notice, this list of conditions and the following michael@0: * disclaimer in the documentation and/or other materials provided michael@0: * with the distribution. michael@0: * michael@0: * Neither the name of the author(s) nor the names of its michael@0: * contributors may be used to endorse or promote products derived michael@0: * from this software without specific prior written permission. michael@0: * michael@0: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS michael@0: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT michael@0: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS michael@0: * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE michael@0: * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, michael@0: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES michael@0: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR michael@0: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) michael@0: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, michael@0: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) michael@0: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED michael@0: * OF THE POSSIBILITY OF SUCH DAMAGE. michael@0: * michael@0: */ michael@0: michael@0: #ifndef KERNEL_COMPAT_H michael@0: #define KERNEL_COMPAT_H michael@0: michael@0: #ifdef SRTP_KERNEL_LINUX michael@0: michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: #include michael@0: michael@0: michael@0: #define err_report(priority, ...) \ michael@0: do {\ michael@0: if (priority <= err_level) {\ michael@0: printk(__VA_ARGS__);\ michael@0: }\ michael@0: }while(0) michael@0: michael@0: #define clock() (jiffies) michael@0: #define time(x) (jiffies) michael@0: michael@0: /* rand() implementation. */ michael@0: #define RAND_MAX 32767 michael@0: michael@0: static inline int rand(void) michael@0: { michael@0: uint32_t temp; michael@0: get_random_bytes(&temp, sizeof(temp)); michael@0: return temp % (RAND_MAX+1); michael@0: } michael@0: michael@0: /* stdio/stdlib implementation. */ michael@0: #define printf(...) printk(__VA_ARGS__) michael@0: #define exit(n) panic("%s:%d: exit(%d)\n", __FILE__, __LINE__, (n)) michael@0: michael@0: #endif /* SRTP_KERNEL_LINUX */ michael@0: michael@0: #endif /* KERNEL_COMPAT_H */