Home | History | Annotate | Download | only in stub
      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