1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 * 5 * Stub implementations of firmware-provided API functions. 6 */ 7 8 #include <stdint.h> 9 10 #define _STUB_IMPLEMENTATION_ 11 12 #include <stdarg.h> 13 #include <stdio.h> 14 #include <stdlib.h> 15 #include <string.h> 16 #include <sys/time.h> 17 18 #include "vboot_api.h" 19 20 /* U-Boot's printf uses '%L' for uint64_t. gcc uses '%l'. */ 21 #define MAX_FMT 255 22 static char fmtbuf[MAX_FMT+1]; 23 24 static const char *fixfmt(const char *format) 25 { 26 int i; 27 for(i=0; i<MAX_FMT && format[i]; i++) { 28 fmtbuf[i] = format[i]; 29 if(format[i] == '%' && format[i+1] == 'L') { 30 fmtbuf[i+1] = 'l'; 31 i++; 32 } 33 } 34 fmtbuf[i] = '\0'; 35 return fmtbuf; 36 } 37 38 void VbExError(const char *format, ...) 39 { 40 va_list ap; 41 va_start(ap, format); 42 fprintf(stderr, "ERROR: "); 43 vfprintf(stderr, fixfmt(format), ap); 44 va_end(ap); 45 exit(1); 46 } 47 48 void VbExDebug(const char *format, ...) 49 { 50 va_list ap; 51 va_start(ap, format); 52 fprintf(stderr, "DEBUG: "); 53 vfprintf(stderr, fixfmt(format), ap); 54 va_end(ap); 55 } 56 57 uint64_t VbExGetTimer(void) 58 { 59 struct timeval tv; 60 gettimeofday(&tv, NULL); 61 return (uint64_t)tv.tv_sec * 1000000 + (uint64_t)tv.tv_usec; 62 } 63 64 VbError_t VbExNvStorageRead(uint8_t *buf) 65 { 66 return VBERROR_SUCCESS; 67 } 68 69 VbError_t VbExNvStorageWrite(const uint8_t *buf) 70 { 71 return VBERROR_SUCCESS; 72 } 73