1/* Copyright 2015 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 * This module provides some utility functions to use "flashrom" to read from 6 * and write to NOR flash. 7 */ 8 9#ifndef VBOOT_REFERCENCE_CGPT_CGPT_NOR_H_ 10#define VBOOT_REFERCENCE_CGPT_CGPT_NOR_H_ 11 12// Obtain the MTD size from its sysfs node. |mtd_device| should point to 13// a dev node such as /dev/mtd0. This function returns 0 on success. 14int GetMtdSize(const char *mtd_device, uint64_t *size); 15 16// Exec |argv| in |cwd|. Return -1 on error, or exit code on success. |argv| 17// must be terminated with a NULL element as is required by execv(). 18int ForkExecV(const char *cwd, const char *const argv[]); 19 20// Similar to ForkExecV but with a vararg instead of an array of pointers. 21int ForkExecL(const char *cwd, const char *cmd, ...); 22 23// Exec "rm" to remove |dir|. 24int RemoveDir(const char *dir); 25 26// Read RW_GPT from NOR flash to "rw_gpt" in a temp dir |temp_dir_template|. 27// |temp_dir_template| is passed to mkdtemp() so it must satisfy all 28// requirements by mkdtemp(). 29int ReadNorFlash(char *temp_dir_template); 30 31// Write "rw_gpt" back to NOR flash. We write the file in two parts for safety. 32int WriteNorFlash(const char *dir); 33 34#endif // VBOOT_REFERCENCE_CGPT_CGPT_NOR_H_ 35