Skip to content

Commit 92e2f28

Browse files
authored
stylistic changes (#111)
1 parent f052003 commit 92e2f28

6 files changed

Lines changed: 110 additions & 139 deletions

File tree

src/kernel/hal/arch/riscv/memory_region.c renamed to src/kernel/hal/arch/riscv/memory_regions.c

Lines changed: 65 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,20 @@
44
* @ingroup hal_riscv_mem
55
*/
66

7+
#include "hal/include/memory_regions.h"
8+
79
#include <libboot/dt/dt.h>
810
#include <libcore/buffer.h>
911
#include <libcore/error.h>
1012

11-
#include "../../hal_internal.h"
12-
#include "../../include/memory_regions.h"
13-
14-
static fdt_t g_hal_riscv_fdt;
15-
static void* g_hal_riscv_fdt_addr = NULL;
13+
#include "hal/hal_internal.h"
1614

17-
static error_t hal_riscv_read_u32_cells_be(buffer_t buf, size_t offset, u32 cell_count, u64* out);
15+
static error_t s_get_fdt(const fdt_t** fdtOUT) {
16+
static fdt_t hal_riscv_fdt;
17+
static void* hal_riscv_fdt_addr = NULL;
1818

19-
static error_t hal_riscv_init_fdt(fdt_t* fdtOUT) {
2019
if (fdtOUT == nullptr)
2120
return ERR_BAD_ARG;
22-
2321
if (!ihal_is_init())
2422
return ERR_NOT_INITIALIZED;
2523

@@ -28,31 +26,18 @@ static error_t hal_riscv_init_fdt(fdt_t* fdtOUT) {
2826
if (err)
2927
return err;
3028

31-
return dt_init(dtb, fdtOUT);
32-
}
33-
34-
static error_t hal_riscv_get_fdt(const fdt_t** fdtOUT) {
35-
if (fdtOUT == nullptr)
36-
return ERR_BAD_ARG;
37-
38-
void* dtb = nullptr;
39-
error_t err = ihal_get_dtb(&dtb);
40-
if (err)
41-
return err;
42-
43-
if (g_hal_riscv_fdt_addr != dtb) {
44-
error_t err = hal_riscv_init_fdt(&g_hal_riscv_fdt);
29+
if (hal_riscv_fdt_addr != dtb) {
30+
err = dt_init(dtb, &hal_riscv_fdt);
4531
if (err)
4632
return err;
47-
48-
g_hal_riscv_fdt_addr = dtb;
33+
hal_riscv_fdt_addr = dtb;
4934
}
5035

51-
*fdtOUT = &g_hal_riscv_fdt;
36+
*fdtOUT = &hal_riscv_fdt;
5237
return ERR_NONE;
5338
}
5439

55-
static error_t hal_riscv_node_is_memory(const fdt_t* fdt, dt_node_t node, bool* isMemoryOUT) {
40+
static error_t s_node_is_memory(const fdt_t* fdt, dt_node_t node, bool* isMemoryOUT) {
5641
if (fdt == nullptr || isMemoryOUT == nullptr)
5742
return ERR_BAD_ARG;
5843

@@ -90,7 +75,7 @@ static error_t hal_riscv_node_is_memory(const fdt_t* fdt, dt_node_t node, bool*
9075
/// \param node Current node (0 to get first memory node, or previous memory node to get next)
9176
/// \param nodeOUT Output parameter for the found memory node
9277
/// \return ERR_NONE on success, error code otherwise
93-
static error_t hal_riscv_find_next_memory_node(const fdt_t* fdt, dt_node_t node, dt_node_t* nodeOUT) {
78+
static error_t s_find_next_memory_node(const fdt_t* fdt, dt_node_t node, dt_node_t* nodeOUT) {
9479
if (fdt == nullptr || nodeOUT == nullptr)
9580
return ERR_BAD_ARG;
9681

@@ -105,7 +90,7 @@ static error_t hal_riscv_find_next_memory_node(const fdt_t* fdt, dt_node_t node,
10590

10691
while (true) {
10792
bool is_memory;
108-
err = hal_riscv_node_is_memory(fdt, node, &is_memory);
93+
err = s_node_is_memory(fdt, node, &is_memory);
10994
if (err)
11095
return err;
11196

@@ -120,8 +105,30 @@ static error_t hal_riscv_find_next_memory_node(const fdt_t* fdt, dt_node_t node,
120105
}
121106
}
122107

123-
static error_t hal_riscv_read_reg_entry(const fdt_t* fdt, dt_node_t node, u32 reg_idx, u32 address_cells,
124-
u32 size_cells, u64* addrOUT, u64* sizeOUT) {
108+
static error_t s_read_u32_cells_be(buffer_t buf, size_t offset, u32 cell_count, u64* out) {
109+
if (out == nullptr || cell_count == 0 || cell_count > 2)
110+
return ERR_BAD_ARG;
111+
112+
if (buf.size < offset)
113+
return ERR_NOT_VALID;
114+
if (buf.size - offset < (size_t)cell_count * sizeof(u32))
115+
return ERR_NOT_VALID;
116+
117+
u64 value = 0;
118+
for (u32 idx = 0; idx < cell_count; ++idx) {
119+
u32 cell = 0;
120+
if (!buffer_read_u32_be(buf, offset + (size_t)idx * sizeof(u32), &cell))
121+
return ERR_NOT_VALID;
122+
123+
value = (value << 32) | cell;
124+
}
125+
126+
*out = value;
127+
return ERR_NONE;
128+
}
129+
130+
static error_t s_read_reg_entry(const fdt_t* fdt, dt_node_t node, u32 reg_idx, u32 address_cells, u32 size_cells,
131+
u64* addrOUT, u64* sizeOUT) {
125132
if (fdt == nullptr || addrOUT == nullptr || sizeOUT == nullptr)
126133
return ERR_BAD_ARG;
127134

@@ -146,11 +153,11 @@ static error_t hal_riscv_read_reg_entry(const fdt_t* fdt, dt_node_t node, u32 re
146153

147154
u64 addr;
148155
u64 size;
149-
err = hal_riscv_read_u32_cells_be(reg_buf, entry_offset, address_cells, &addr);
156+
err = s_read_u32_cells_be(reg_buf, entry_offset, address_cells, &addr);
150157
if (err)
151158
return err;
152159

153-
err = hal_riscv_read_u32_cells_be(reg_buf, entry_offset + (size_t)address_cells * sizeof(u32), size_cells, &size);
160+
err = s_read_u32_cells_be(reg_buf, entry_offset + (size_t)address_cells * sizeof(u32), size_cells, &size);
154161
if (err)
155162
return err;
156163

@@ -159,44 +166,26 @@ static error_t hal_riscv_read_reg_entry(const fdt_t* fdt, dt_node_t node, u32 re
159166
return ERR_NONE;
160167
}
161168

162-
static error_t hal_riscv_read_u32_cells_be(buffer_t buf, size_t offset, u32 cell_count, u64* out) {
163-
if (out == nullptr || cell_count == 0 || cell_count > 2)
164-
return ERR_BAD_ARG;
165-
166-
if (buf.size < offset)
167-
return ERR_NOT_VALID;
168-
if (buf.size - offset < (size_t)cell_count * sizeof(u32))
169-
return ERR_NOT_VALID;
170-
171-
u64 value = 0;
172-
for (u32 idx = 0; idx < cell_count; ++idx) {
173-
u32 cell = 0;
174-
if (!buffer_read_u32_be(buf, offset + (size_t)idx * sizeof(u32), &cell))
175-
return ERR_NOT_VALID;
176-
177-
value = (value << 32) | cell;
178-
}
179-
180-
*out = value;
181-
return ERR_NONE;
182-
}
183-
184169
typedef struct {
185170
u32 memreserve_idx;
186171
bool is_in_resmem;
187172
dt_node_t resmem_current_node;
188173
u32 resmem_address_cells;
189174
u32 resmem_size_cells;
190175
u32 resmem_reg_idx;
191-
} riscv_hal_res_mem_iter_t;
192-
static_assert(sizeof(riscv_hal_res_mem_iter_t) <= sizeof(hal_reserved_memory_iterator_t));
176+
} internal_res_mem_iter_t;
177+
static_assert(sizeof(internal_res_mem_iter_t) <= sizeof(hal_reserved_memory_iterator_t));
178+
179+
// ==========================================
180+
// Public
181+
// ==========================================
193182

194183
error_t hal_get_reserved_regions_iterator(hal_reserved_memory_iterator_t* iterOUT) {
195184
if (iterOUT == nullptr)
196185
return ERR_BAD_ARG;
197186

198187
const fdt_t* fdt;
199-
error_t err = hal_riscv_get_fdt(&fdt);
188+
error_t err = s_get_fdt(&fdt);
200189
if (err)
201190
return err;
202191

@@ -216,15 +205,15 @@ error_t hal_get_reserved_regions_iterator(hal_reserved_memory_iterator_t* iterOU
216205
if (err)
217206
return err;
218207

219-
const riscv_hal_res_mem_iter_t init = {
208+
const internal_res_mem_iter_t init = {
220209
.memreserve_idx = 0,
221210
.is_in_resmem = false,
222211
.resmem_current_node = resmem_first_node,
223212
.resmem_address_cells = address_cells,
224213
.resmem_size_cells = size_cells,
225214
.resmem_reg_idx = 0,
226215
};
227-
*(riscv_hal_res_mem_iter_t*)iterOUT = init;
216+
*(internal_res_mem_iter_t*)iterOUT = init;
228217
return ERR_NONE;
229218
}
230219

@@ -233,11 +222,11 @@ error_t hal_get_next_reserved_region(hal_reserved_memory_iterator_t* iter, memor
233222
return ERR_BAD_ARG;
234223

235224
const fdt_t* fdt;
236-
error_t err = hal_riscv_get_fdt(&fdt);
225+
error_t err = s_get_fdt(&fdt);
237226
if (err)
238227
return err;
239228

240-
riscv_hal_res_mem_iter_t next_iter = *(riscv_hal_res_mem_iter_t*)iter;
229+
internal_res_mem_iter_t next_iter = *(internal_res_mem_iter_t*)iter;
241230

242231
if (!next_iter.is_in_resmem) {
243232
fdt_rsv_entry entry;
@@ -248,7 +237,7 @@ error_t hal_get_next_reserved_region(hal_reserved_memory_iterator_t* iter, memor
248237
.size = entry.size,
249238
};
250239
next_iter.memreserve_idx += 1;
251-
*(riscv_hal_res_mem_iter_t*)iter = next_iter;
240+
*(internal_res_mem_iter_t*)iter = next_iter;
252241
*areaOUT = area;
253242
return ERR_NONE;
254243
}
@@ -262,8 +251,8 @@ error_t hal_get_next_reserved_region(hal_reserved_memory_iterator_t* iter, memor
262251
while (next_iter.resmem_current_node) {
263252
u64 addr;
264253
u64 size;
265-
err = hal_riscv_read_reg_entry(fdt, next_iter.resmem_current_node, next_iter.resmem_reg_idx,
266-
next_iter.resmem_address_cells, next_iter.resmem_size_cells, &addr, &size);
254+
err = s_read_reg_entry(fdt, next_iter.resmem_current_node, next_iter.resmem_reg_idx,
255+
next_iter.resmem_address_cells, next_iter.resmem_size_cells, &addr, &size);
267256
if (err != ERR_NONE && err != ERR_NOT_FOUND) {
268257
return err;
269258
}
@@ -273,7 +262,7 @@ error_t hal_get_next_reserved_region(hal_reserved_memory_iterator_t* iter, memor
273262
.size = size,
274263
};
275264
next_iter.resmem_reg_idx += 1;
276-
*(riscv_hal_res_mem_iter_t*)iter = next_iter;
265+
*(internal_res_mem_iter_t*)iter = next_iter;
277266
*areaOUT = area;
278267
return ERR_NONE;
279268
}
@@ -297,15 +286,15 @@ typedef struct {
297286
u32 reg_idx;
298287
u32 size_cells;
299288
u32 address_cells;
300-
} riscv_hal_mem_iter_t;
301-
static_assert(sizeof(riscv_hal_mem_iter_t) <= sizeof(hal_memory_iterator_t));
289+
} internal_hal_mem_iter_t;
290+
static_assert(sizeof(internal_hal_mem_iter_t) <= sizeof(hal_memory_iterator_t));
302291

303292
error_t hal_get_memory_regions_iterator(hal_memory_iterator_t* iterOUT) {
304293
if (iterOUT == nullptr)
305294
return ERR_BAD_ARG;
306295

307296
const fdt_t* fdt;
308-
error_t err = hal_riscv_get_fdt(&fdt);
297+
error_t err = s_get_fdt(&fdt);
309298
if (err)
310299
return err;
311300

@@ -316,28 +305,28 @@ error_t hal_get_memory_regions_iterator(hal_memory_iterator_t* iterOUT) {
316305
return err;
317306

318307
dt_node_t first_memory_node;
319-
err = hal_riscv_find_next_memory_node(fdt, 0, &first_memory_node);
308+
err = s_find_next_memory_node(fdt, 0, &first_memory_node);
320309
if (err)
321310
return err;
322311

323-
const riscv_hal_mem_iter_t init = {
312+
const internal_hal_mem_iter_t init = {
324313
.node = first_memory_node,
325314
.reg_idx = 0,
326315
.size_cells = size_cells,
327316
.address_cells = address_cells,
328317
};
329-
*(riscv_hal_mem_iter_t*)iterOUT = init;
318+
*(internal_hal_mem_iter_t*)iterOUT = init;
330319
return ERR_NONE;
331320
}
332321

333322
error_t hal_get_next_memory_region(hal_memory_iterator_t* iter, physical_memory_region_t* areaOUT) {
334323
if (iter == nullptr || areaOUT == nullptr)
335324
return ERR_BAD_ARG;
336325

337-
riscv_hal_mem_iter_t next_iter = *(riscv_hal_mem_iter_t*)iter;
326+
internal_hal_mem_iter_t next_iter = *(internal_hal_mem_iter_t*)iter;
338327

339328
const fdt_t* fdt;
340-
error_t err = hal_riscv_get_fdt(&fdt);
329+
error_t err = s_get_fdt(&fdt);
341330
if (err)
342331
return err;
343332

@@ -347,7 +336,7 @@ error_t hal_get_next_memory_region(hal_memory_iterator_t* iter, physical_memory_
347336
while (next_iter.node != 0) {
348337
u64 addr;
349338
u64 size;
350-
err = hal_riscv_read_reg_entry(fdt, next_iter.node, next_iter.reg_idx, address_cells, size_cells, &addr, &size);
339+
err = s_read_reg_entry(fdt, next_iter.node, next_iter.reg_idx, address_cells, size_cells, &addr, &size);
351340
if (err != ERR_NONE && err != ERR_NOT_FOUND) {
352341
return err;
353342
}
@@ -357,13 +346,13 @@ error_t hal_get_next_memory_region(hal_memory_iterator_t* iter, physical_memory_
357346
.size = size,
358347
};
359348
next_iter.reg_idx += 1;
360-
*(riscv_hal_mem_iter_t*)iter = next_iter;
349+
*(internal_hal_mem_iter_t*)iter = next_iter;
361350
*areaOUT = area;
362351
return ERR_NONE;
363352
}
364353

365354
dt_node_t next_memory_node;
366-
err = hal_riscv_find_next_memory_node(fdt, next_iter.node, &next_memory_node);
355+
err = s_find_next_memory_node(fdt, next_iter.node, &next_memory_node);
367356
if (err == ERR_NONE) {
368357
next_iter.node = next_memory_node;
369358
next_iter.reg_idx = 0;

0 commit comments

Comments
 (0)