2a6a28e792
I always go nuts when I start an MTD test on a slow device and have to wait forever until it finishes. From the debug output I already know what the issue is but I have to wait or reset the board hard. Resetting is often not an option (remote access, you don't want lose the current state, etc...). The solution is easy, check for pending signals at key positions in the code. Using that one can even stop a test by pressing CTRL-C as insmod/modprobe have SIGINT pending. Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
24 lines
689 B
C
24 lines
689 B
C
#include <linux/mtd/mtd.h>
|
|
#include <linux/sched.h>
|
|
|
|
static inline int mtdtest_relax(void)
|
|
{
|
|
cond_resched();
|
|
if (signal_pending(current)) {
|
|
pr_info("aborting test due to pending signal!\n");
|
|
return -EINTR;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum);
|
|
int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
|
|
unsigned int eb, int ebcnt);
|
|
int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
|
|
unsigned int eb, int ebcnt);
|
|
|
|
int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf);
|
|
int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
|
|
const void *buf);
|