diff options
Diffstat (limited to 'flashimg/cpu_main/flashio.h')
-rw-r--r-- | flashimg/cpu_main/flashio.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/flashimg/cpu_main/flashio.h b/flashimg/cpu_main/flashio.h new file mode 100644 index 0000000..c109739 --- /dev/null +++ b/flashimg/cpu_main/flashio.h @@ -0,0 +1,29 @@ +/* flashimg/cpu_main/flashio.h - DMA-safe flash storage + * + * Copyright (C) 2025 Luke T. Shumaker <lukeshu@lukeshu.com> + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +#ifndef _FLASHIMG_CPU_MAIN_FLASHIO_H_ +#define _FLASHIMG_CPU_MAIN_FLASHIO_H_ + +#include <hardware/flash.h> /* for FLASH_SECTOR_SIZE */ + +#include <libcr_ipc/mutex.h> +#include <libhw/generic/io.h> +#include <libmisc/private.h> + +struct flashio { + BEGIN_PRIVATE(FLASHIO_H); + uint8_t dat[FLASH_SECTOR_SIZE]; + size_t dat_pos; + bool dat_dirty; + bool dat_ok; + cr_mutex_t mu; + END_PRIVATE(FLASHIO_H); +}; +LO_IMPLEMENTATION_H(io_preader_to, struct flashio, flashio); +LO_IMPLEMENTATION_H(io_pwriter, struct flashio, flashio); +LO_IMPLEMENTATION_H(io_flusher, struct flashio, flashio); + +#endif /* _FLASHIMG_CPU_MAIN_FLASHIO_H_ */ |