Files
OpenCellular/host/include/crossystem_arch.h
Randall Spangler eb59195473 Refactor crossystem to move x86-specific implementation to its own file.
This should be ready for the ARM team to pick up and work on.  I added
a placeholder ARM implementation file, though it's not hooked up in
the Makefile yet.

As soon as you implement the VbNvStorage APIs, all the related
crossystem commands will start working.  Ditto for VbSharedData.

The params which x86 gets from ACPI you'll need to get from u-boot
somehow, probably via your own kernel driver.

R=robotboy@chromium.org
BUG=chromium-os:12522
TEST=emerge-x86-alex vboot_reference, make sure it still works on x86

Review URL: http://codereview.chromium.org/6780008

Change-Id: I628ee56508421b937ed50db7cb9b8385408d2f5e
2011-04-07 10:02:00 -07:00

81 lines
2.5 KiB
C

/* Copyright (c) 2011 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.
*
* Architecture-specific APIs for crossystem
*/
#ifndef VBOOT_REFERENCE_CROSSYSTEM_ARCH_H_
#define VBOOT_REFERENCE_CROSSYSTEM_ARCH_H_
#include "vboot_nvstorage.h"
#include "vboot_struct.h"
/* INTERNAL APIS FOR CROSSYSTEM AVAILABLE TO ARCH-SPECIFIC FUNCTIONS */
/* Read an integer property from VbNvStorage.
*
* Returns the parameter value, or -1 if error. */
int VbGetNvStorage(VbNvParam param);
/* Write an integer property to VbNvStorage.
*
* Returns 0 if success, -1 if error. */
int VbSetNvStorage(VbNvParam param, int value);
/* Return true if the FWID starts with the specified string. */
int FwidStartsWith(const char *start);
/* APIS WITH ARCH-SPECIFIC IMPLEMENTATIONS */
/* Read the non-volatile context from NVRAM.
*
* Returns 0 if success, -1 if error. */
int VbReadNvStorage(VbNvContext* vnc);
/* Write the non-volatile context to NVRAM.
*
* Returns 0 if success, -1 if error. */
int VbWriteNvStorage(VbNvContext* vnc);
/* Read the VbSharedData buffer.
*
* Verifies the buffer contains at least enough data for the
* VbSharedDataHeader; if not, this is an error.
*
* If less data is read than expected, sets the returned structure's data_size
* to the actual amount of data read. If this is less than data_used, then
* some data was not returned; callers must handle this; this is not considered
* an error.
*
* Returns the data buffer, which must be freed by the caller, or NULL if
* error. */
VbSharedDataHeader* VbSharedDataRead(void);
/* Read an architecture-specific system property integer.
*
* Returns the property value, or -1 if error. */
int VbGetArchPropertyInt(const char* name);
/* Read an architecture-specific system property string into a
* destination buffer of the specified size. Returned string will be
* null-terminated. If the buffer is too small, the returned string
* will be truncated.
*
* Returns the passed buffer, or NULL if error. */
const char* VbGetArchPropertyString(const char* name, char* dest, int size);
/* Set an architecture-specific system property integer.
*
* Returns 0 if success, -1 if error. */
int VbSetArchPropertyInt(const char* name, int value);
/* Set an architecture-specific system property string.
*
* Returns 0 if success, -1 if error. */
int VbSetArchPropertyString(const char* name, const char* value);
#endif /* VBOOT_REFERENCE__CROSSYSTEM_ARCH_H_ */