RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
cpukit
libfs
src
jffs2
include
linux
mtd
mtd.h
1
#ifndef __LINUX_MTD_MTD_H__
2
#define __LINUX_MTD_MTD_H__
3
4
#include <linux/slab.h>
5
#include <errno.h>
6
7
#define MTD_FAIL_ADDR_UNKNOWN -1LL
8
9
struct
mtd_info
{
10
uint32_t oobavail;
11
uint32_t oobsize;
12
uint32_t size;
13
uint32_t erasesize;
14
uint32_t writesize;
15
};
16
17
static
inline
int
do_mtd_point(
size_t
*retlen,
void
**ebuf)
18
{
19
*retlen = 0;
20
*ebuf = NULL;
21
22
return
-EOPNOTSUPP;
23
}
24
25
#define mtd_point(a, b, c, d, e, f) do_mtd_point(d, e)
26
27
#define mtd_unpoint(a, b, c) do { } while (0)
28
29
#define mtd_kmalloc_up_to(a, b) kmalloc(*(b), GFP_KERNEL)
30
31
struct
mtd_oob_ops
{
32
uint32_t mode;
33
size_t
len;
34
size_t
retlen;
35
size_t
ooblen;
36
size_t
oobretlen;
37
uint32_t ooboffs;
38
uint8_t *datbuf;
39
uint8_t *oobbuf;
40
};
41
42
#define EUCLEAN EAGAIN
43
static
inline
int
mtd_is_bitflip(
int
err) {
return
(err == -EUCLEAN); }
44
45
#define mtd_block_isbad(mtd_sp, offset) ({ \
46
bool bad; \
47
int sc = jffs2_flash_block_is_bad(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), offset, &bad); \
48
if (sc) { \
49
return sc; \
50
} \
51
bad; \
52
})
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) \
56
({ \
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); \
62
})
63
#define mtd_writev(mtd_sp, vecs, count, to, retlen) \
64
({ \
65
size_t _totlen = 0; \
66
size_t _thislen; \
67
int _ret = 0; \
68
for (int _i = 0; _i < count; _i++) { \
69
_ret = mtd_write(c->mtd, to, vecs[_i].iov_len, &_thislen, \
70
vecs[_i].iov_base); \
71
_totlen += _thislen; \
72
if (_ret || _thislen != vecs[_i].iov_len) { \
73
break; \
74
} \
75
to += vecs[_i].iov_len; \
76
} \
77
if (retlen) { \
78
*retlen = _totlen; \
79
} \
80
_ret; \
81
})
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)
84
85
#endif
/* __LINUX_MTD_MTD_H__ */
mtd_info
Definition
mtd.h:9
mtd_oob_ops
Definition
mtd.h:31
Generated by
1.18.0