16ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 26ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * kernel_compat.h 36ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 46ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Compatibility stuff for building in kernel context where standard 56ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * C headers and library are not available. 66ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 76ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Marcus Sundberg 86ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Ingate Systems AB 96ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 106ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* 116ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 126ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Copyright(c) 2005 Ingate Systems AB 136ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * All rights reserved. 146ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 156ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistribution and use in source and binary forms, with or without 166ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * modification, are permitted provided that the following conditions 176ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * are met: 186ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 196ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions of source code must retain the above copyright 206ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * notice, this list of conditions and the following disclaimer. 216ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 226ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Redistributions in binary form must reproduce the above 236ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * copyright notice, this list of conditions and the following 246ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * disclaimer in the documentation and/or other materials provided 256ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * with the distribution. 266ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 276ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * Neither the name of the author(s) nor the names of its 286ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * contributors may be used to endorse or promote products derived 296ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * from this software without specific prior written permission. 306ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 316ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 326ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 336ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 346ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 356ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 366ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 376ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 386ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 396ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 406ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 416ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 426ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * OF THE POSSIBILITY OF SUCH DAMAGE. 436ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org * 446ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org */ 456ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 466ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#ifndef KERNEL_COMPAT_H 476ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define KERNEL_COMPAT_H 486ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 496ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#ifdef SRTP_KERNEL_LINUX 506ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 516ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <linux/kernel.h> 526ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <linux/slab.h> 536ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <linux/sched.h> 546ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <linux/random.h> 556ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#include <linux/byteorder/generic.h> 566ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 576ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 586ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define err_report(priority, ...) \ 596ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org do {\ 606ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org if (priority <= err_level) {\ 616ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org printk(__VA_ARGS__);\ 626ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org }\ 636ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org }while(0) 646ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 656ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define clock() (jiffies) 666ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define time(x) (jiffies) 676ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 686ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* rand() implementation. */ 696ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define RAND_MAX 32767 706ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 717bcb8db4f328fefa2056e025e1d1b657ef98adcfscottmg@chromium.orgstatic INLINE int rand(void) 726ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org{ 736ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org uint32_t temp; 746ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org get_random_bytes(&temp, sizeof(temp)); 756ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org return temp % (RAND_MAX+1); 766ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org} 776ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 786ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org/* stdio/stdlib implementation. */ 796ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define printf(...) printk(__VA_ARGS__) 806ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#define exit(n) panic("%s:%d: exit(%d)\n", __FILE__, __LINE__, (n)) 816ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 826ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif /* SRTP_KERNEL_LINUX */ 836ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org 846ed0ee98e1c3d29a0ef79996f7d1abf174f39besergeyu@chromium.org#endif /* KERNEL_COMPAT_H */ 85