| /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| * |
| * Stub implementations of firmware-provided API functions. |
| */ |
| |
| |
| #include <stdarg.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <sys/time.h> |
| |
| #include "vboot_api.h" |
| |
| /* U-Boot's printf uses '%L' for uint64_t. gcc uses '%l'. */ |
| #define MAX_FMT 255 |
| static char fmtbuf[MAX_FMT+1]; |
| |
| static const char *fixfmt(const char *format) |
| { |
| int i; |
| for(i=0; i<sizeof(fmtbuf)-1 && format[i]; i++) { |
| fmtbuf[i] = format[i]; |
| if(format[i] == '%' && format[i+1] == 'L') { |
| fmtbuf[i+1] = 'l'; |
| i++; |
| } |
| } |
| fmtbuf[i] = '\0'; |
| return fmtbuf; |
| } |
| |
| void VbExError(const char *format, ...) |
| { |
| va_list ap; |
| va_start(ap, format); |
| fprintf(stderr, "ERROR: "); |
| vfprintf(stderr, fixfmt(format), ap); |
| va_end(ap); |
| exit(1); |
| } |
| |
| void VbExDebug(const char *format, ...) |
| { |
| va_list ap; |
| va_start(ap, format); |
| fprintf(stderr, "DEBUG: "); |
| vfprintf(stderr, fixfmt(format), ap); |
| va_end(ap); |
| } |
| |
| uint64_t VbExGetTimer(void) |
| { |
| struct timeval tv; |
| gettimeofday(&tv, NULL); |
| return (uint64_t)tv.tv_sec * 1000000 + (uint64_t)tv.tv_usec; |
| } |
| |
| VbError_t test_mockable VbExNvStorageRead(uint8_t *buf) |
| { |
| return VBERROR_SUCCESS; |
| } |
| |
| VbError_t VbExNvStorageWrite(const uint8_t *buf) |
| { |
| return VBERROR_SUCCESS; |
| } |