1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Permission is hereby granted, free of charge, to any person 5 * obtaining a copy of this software and associated documentation 6 * files (the "Software"), to deal in the Software without 7 * restriction, including without limitation the rights to use, copy, 8 * modify, merge, publish, distribute, sublicense, and/or sell copies 9 * of the Software, and to permit persons to whom the Software is 10 * furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 */ 24 25 #include <stdio.h> 26 #include <common.h> 27 #include <stdarg.h> 28 #include <stdlib.h> 29 #include <malloc.h> 30 #include <errno.h> 31 #include <asm/io.h> 32 33 #include <android_avb/avb_sysdeps.h> 34 35 void abort(void) 36 { 37 38 } 39 int avb_memcmp(const void* src1, const void* src2, size_t n) { 40 return memcmp(src1, src2, n); 41 } 42 43 void* avb_memcpy(void* dest, const void* src, size_t n) { 44 return memcpy(dest, src, n); 45 } 46 47 void* avb_memset(void* dest, const int c, size_t n) { 48 return memset(dest, c, n); 49 } 50 51 int avb_strcmp(const char* s1, const char* s2) { 52 return strcmp(s1, s2); 53 } 54 55 size_t avb_strlen(const char* str) { 56 return strlen(str); 57 } 58 59 void avb_abort(void) { 60 abort(); 61 } 62 63 void avb_print(const char* message) { 64 printf("%s", message); 65 } 66 67 void avb_printv(const char* message, ...) { 68 va_list ap; 69 const char* m; 70 71 va_start(ap, message); 72 for (m = message; m != NULL; m = va_arg(ap, const char*)) { 73 printf("%s", m); 74 } 75 va_end(ap); 76 } 77 78 void* avb_malloc_(size_t size) { 79 return malloc(size); 80 } 81 82 void avb_free(void* ptr) { 83 free(ptr); 84 } 85 86 uint32_t avb_div_by_10(uint64_t* dividend) { 87 uint32_t rem = (uint32_t)(*dividend % 10); 88 *dividend /= 10; 89 return rem; 90 } 91