 |
RTEMS 6.2
|
Loading...
Searching...
No Matches
1#ifndef __LINUX_MTD_MTD_H__
2#define __LINUX_MTD_MTD_H__
7#define MTD_FAIL_ADDR_UNKNOWN -1LL
17static inline int do_mtd_point(
size_t *retlen,
void **ebuf)
25#define mtd_point(a, b, c, d, e, f) do_mtd_point(d, e)
27#define mtd_unpoint(a, b, c) do { } while (0)
29#define mtd_kmalloc_up_to(a, b) kmalloc(*(b), GFP_KERNEL)
43static inline int mtd_is_bitflip(
int err) {
return (err == -EUCLEAN); }
45#define mtd_block_isbad(mtd_sp, offset) ({ \
47 int sc = jffs2_flash_block_is_bad(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), offset, &bad); \
53#define mtd_block_markbad(mtd_sp, offset) \
54 jffs2_flash_block_mark_bad(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), offset)
55#define mtd_write(mtd_sp, write_buffer_offset, size, return_size, write_buffer) \
57 struct jffs2_sb_info *_c = RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd); \
58 const struct super_block *_sb = OFNI_BS_2SFFJ(_c); \
59 rtems_jffs2_flash_control *_fc = _sb->s_flash_control; \
60 *return_size = size; \
61 (*_fc->write)(_fc, write_buffer_offset, write_buffer, size); \
63#define mtd_writev(mtd_sp, vecs, count, to, retlen) \
68 for (int _i = 0; _i < count; _i++) { \
69 _ret = mtd_write(c->mtd, to, vecs[_i].iov_len, &_thislen, \
71 _totlen += _thislen; \
72 if (_ret || _thislen != vecs[_i].iov_len) { \
75 to += vecs[_i].iov_len; \
82#define mtd_read(mtd_sp, ofs, len, retlen, buf) \
83 jffs2_flash_direct_read(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), ofs, len, retlen, buf)