diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-07-03 08:00:50 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-07-03 08:00:50 -0600 |
commit | 1d5a211e1ae3645e9c13163b76fea0a3c87f46f1 (patch) | |
tree | 610128434e35b9b6028609d7cb5d67bcd13b3379 /flashimg/cpu_main/flashio.h | |
parent | 1be02f3e2379b2cd06dbae775504948ff37bf89a (diff) | |
parent | ad2ef1642096665be998e83f9b6c4b7de308b644 (diff) |
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_ */ |