@@ -20,12 +20,16 @@ static struct {
20
20
int ret ;
21
21
/* Some size */
22
22
uint64_t size ;
23
+ /* Device mmap test values */
24
+ void * mmap_base ;
25
+ ssize_t mmap_size ;
26
+ uint32_t mmap_flags ;
23
27
} simulated_values = {
24
28
.ret = 0 ,
25
29
.size = 0 ,
26
30
};
27
31
28
- /*** Device definition atd == API Test Dev * **/
32
+ /*** Device definition of API pseudo functions **/
29
33
static int some_get_size (const struct device * dev , uint64_t * size )
30
34
{
31
35
__ASSERT_NO_MSG (dev != NULL );
@@ -42,21 +46,53 @@ static int enotsup_get_size(const struct device *dev, uint64_t *size)
42
46
return - ENOTSUP ;
43
47
}
44
48
49
+ static int some_mmap (const struct device * dev , void * * base , uint64_t * size ,
50
+ uint32_t flags )
51
+ {
52
+ __ASSERT_NO_MSG (dev != NULL );
53
+
54
+ if (flags != simulated_values .mmap_flags ) {
55
+ return - EINVAL ;
56
+ }
57
+
58
+ if (base == NULL || size == NULL ) {
59
+ return - EINVAL ;
60
+ }
61
+
62
+ * base = simulated_values .mmap_base ;
63
+ * size = simulated_values .mmap_size ;
64
+
65
+ return 0 ;
66
+ }
67
+
68
+ static int enotsup_mmap (const struct device * dev , void * * base , uint64_t * size ,
69
+ uint32_t flags )
70
+ {
71
+ ARG_UNUSED (dev );
72
+ ARG_UNUSED (base );
73
+ ARG_UNUSED (size );
74
+ ARG_UNUSED (flags );
75
+
76
+ return 0 ;
77
+ }
78
+
45
79
/** Device objects **/
46
80
/* The device state, just to make it "ready" device */
47
81
static struct device_state some_dev_state = {
48
82
.init_res = 0 ,
49
83
.initialized = 1 ,
50
84
};
51
85
52
- /* Device with get_size */
53
- static DEVICE_API (flash , size_fun_api ) = {
86
+ /* Device with implemented api calls */
87
+ static DEVICE_API (flash , some_fun_api ) = {
54
88
.get_size = some_get_size ,
89
+ .mmap = some_mmap ,
55
90
};
56
- const static struct device size_fun_dev = {
57
- "get_size" ,
91
+
92
+ const static struct device some_fun_dev = {
93
+ "some_fun" ,
58
94
NULL ,
59
- & size_fun_api ,
95
+ & some_fun_api ,
60
96
& some_dev_state ,
61
97
};
62
98
@@ -72,6 +108,7 @@ const static struct device no_fun_dev = {
72
108
/* Device with get_size implemented but returning -ENOTSUP */
73
109
static DEVICE_API (flash , enotsup_fun_api ) = {
74
110
.get_size = enotsup_get_size ,
111
+ .mmap = enotsup_mmap ,
75
112
};
76
113
static struct device enotsup_fun_dev = {
77
114
"enotsup" ,
@@ -85,14 +122,53 @@ ZTEST(flash_api, test_get_size)
85
122
uint64_t size = 0 ;
86
123
87
124
simulated_values .size = 45 ;
88
- zassert_ok (flash_get_size (& size_fun_dev , & size ), "Expected success" );
125
+ zassert_ok (flash_get_size (& some_fun_dev , & size ), "Expected success" );
89
126
zassert_equal (size , simulated_values .size , "Size mismatch" );
90
127
simulated_values .size = 46 ;
91
- zassert_ok (flash_get_size (& size_fun_dev , & size ), "Expected success" );
128
+ zassert_ok (flash_get_size (& some_fun_dev , & size ), "Expected success" );
92
129
zassert_equal (size , simulated_values .size , "Size mismatch" );
93
130
zassert_equal (flash_get_size (& no_fun_dev , & size ), - ENOSYS );
94
131
95
132
zassert_equal (flash_get_size (& enotsup_fun_dev , & size ), - ENOTSUP );
96
133
}
97
134
135
+
136
+ ZTEST (flash_api , test_flash_mmap )
137
+ {
138
+ void * base = NULL ;
139
+ uint64_t size = 0 ;
140
+
141
+ simulated_values .mmap_size = 40 ;
142
+ /* Just need some pointer */
143
+ simulated_values .mmap_base = (void * )& simulated_values ;
144
+ /* 0 for error tests */
145
+ simulated_values .mmap_flags = 0 ;
146
+
147
+ zassert_equal (flash_mmap (& some_fun_dev , NULL , NULL , 0 ), - EINVAL );
148
+ zassert_equal (flash_mmap (& some_fun_dev , & base , NULL , 0 ), - EINVAL );
149
+ zassert_equal (flash_mmap (& some_fun_dev , NULL , & size , 0 ), - EINVAL );
150
+ zassert_equal (flash_mmap (& some_fun_dev , & base , & size , FLASH_MMAP_F_READ ), - EINVAL );
151
+ zassert_equal (flash_mmap (& some_fun_dev , & base , & size , FLASH_MMAP_F_WRITE ), - EINVAL );
152
+ zassert_equal (flash_mmap (& some_fun_dev , & base , & size ,
153
+ FLASH_MMAP_F_READ | FLASH_MMAP_F_WRITE ), - EINVAL );
154
+
155
+ simulated_values .mmap_flags = FLASH_MMAP_F_READ ;
156
+ zassert_equal (flash_mmap (& some_fun_dev , & base , & size , FLASH_MMAP_F_WRITE ), - EINVAL );
157
+
158
+ simulated_values .mmap_flags = FLASH_MMAP_F_WRITE ;
159
+ zassert_equal (flash_mmap (& some_fun_dev , & base , & size , FLASH_MMAP_F_READ ), - EINVAL );
160
+
161
+ zassert_equal (flash_get_size (& enotsup_fun_dev , & size ), - ENOTSUP );
162
+
163
+ /* After all failures the base and size are expected to be not modified */
164
+ zassert_equal (base , NULL );
165
+ zassert_equal (size , 0 );
166
+
167
+ simulated_values .mmap_flags = FLASH_MMAP_F_READ ;
168
+ zassert_ok (flash_mmap (& some_fun_dev , & base , & size , FLASH_MMAP_F_READ ));
169
+ /* Expected values to be read by API and updated */
170
+ zassert_equal (base , simulated_values .mmap_base );
171
+ zassert_equal (size , simulated_values .mmap_size );
172
+ }
173
+
98
174
ZTEST_SUITE (flash_api , NULL , NULL , NULL , NULL , NULL );
0 commit comments