^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #include <linux/mtd/mtd.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #include <linux/sched/signal.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) static inline int mtdtest_relax(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) cond_resched();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) if (signal_pending(current)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) pr_info("aborting test due to pending signal!\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) return -EINTR;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) unsigned int eb, int ebcnt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned int eb, int ebcnt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) const void *buf);