MCPcopy Create free account
hub / github.com/ARMmbed/mbed-os / format

Method format

storage/filesystem/fat/source/FATFileSystem.cpp:346–435  ·  view source on GitHub ↗

See http://elm-chan.org/fsw/ff/en/mkfs.html for details of f_mkfs() and * associated arguments. */

Source from the content-addressed store, hash-verified

344/* See http://elm-chan.org/fsw/ff/en/mkfs.html for details of f_mkfs() and
345 * associated arguments. */
346int FATFileSystem::format(BlockDevice *bd, bd_size_t cluster_size)
347{
348 FATFileSystem fs;
349 fs.lock();
350
351 int err = bd->init();
352 if (err) {
353 fs.unlock();
354 return err;
355 }
356
357 // erase first handful of blocks
358 bd_size_t header = 2 * bd->get_erase_size();
359 err = bd->erase(0, header);
360 if (err) {
361 bd->deinit();
362 fs.unlock();
363 return err;
364 }
365
366 if (bd->get_erase_value() < 0) {
367 // erase is unknown, need to write 1s
368 bd_size_t program_size = bd->get_program_size();
369 void *buf = malloc(program_size);
370 if (!buf) {
371 bd->deinit();
372 fs.unlock();
373 return -ENOMEM;
374 }
375
376 memset(buf, 0xff, program_size);
377
378 for (bd_addr_t i = 0; i < header; i += program_size) {
379 err = bd->program(buf, i, program_size);
380 if (err) {
381 free(buf);
382 bd->deinit();
383 fs.unlock();
384 return err;
385 }
386 }
387
388 free(buf);
389 }
390
391 // trim entire device to indicate it is unneeded
392 err = bd->trim(0, bd->size());
393 if (err) {
394 bd->deinit();
395 fs.unlock();
396 return err;
397 }
398
399 err = bd->deinit();
400 if (err) {
401 fs.unlock();
402 return err;
403 }

Callers 3

_spi_initMethod · 0.45
fsfat_fopen_test_00Function · 0.45
fsfat_fopen_test_15Function · 0.45

Calls 15

f_mkfsFunction · 0.85
fat_error_remapFunction · 0.85
freeFunction · 0.50
lockMethod · 0.45
initMethod · 0.45
unlockMethod · 0.45
get_erase_sizeMethod · 0.45
eraseMethod · 0.45
deinitMethod · 0.45
get_erase_valueMethod · 0.45
get_program_sizeMethod · 0.45
programMethod · 0.45

Tested by 2

fsfat_fopen_test_00Function · 0.36
fsfat_fopen_test_15Function · 0.36