MCPcopy Create free account
hub / github.com/apache/nuttx / ramdisk_register

Function ramdisk_register

drivers/misc/ramdisk.c:421–467  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

419 ****************************************************************************/
420
421int ramdisk_register(int minor, FAR uint8_t *buffer, uint32_t nsectors,
422 uint16_t sectsize, uint8_t rdflags)
423{
424 FAR struct rd_struct_s *dev;
425 char devname[16];
426 int ret = -ENOMEM;
427
428 finfo("buffer: %p nsectors: %" PRIu32 " sectsize: %" PRIu16 "\n",
429 buffer, nsectors, sectsize);
430
431 /* Sanity check */
432
433#ifdef CONFIG_DEBUG_FEATURES
434 if (minor < 0 || minor > 255 || !buffer || !nsectors || !sectsize)
435 {
436 return -EINVAL;
437 }
438#endif
439
440 /* Allocate a ramdisk device structure */
441
442 dev = kmm_zalloc(sizeof(struct rd_struct_s));
443 if (dev)
444 {
445 /* Initialize the ramdisk device structure */
446
447 dev->rd_nsectors = nsectors; /* Number of sectors on device */
448 dev->rd_sectsize = sectsize; /* The size of one sector */
449 dev->rd_buffer = buffer; /* RAM disk backup memory */
450 dev->rd_flags = rdflags & RDFLAG_USER;
451
452 /* Create a ramdisk device name */
453
454 snprintf(devname, sizeof(devname), "/dev/ram%d", minor);
455
456 /* Inode private data is a reference to the ramdisk device structure */
457
458 ret = register_blockdriver(devname, &g_bops, 0, dev);
459 if (ret < 0)
460 {
461 ferr("register_blockdriver failed: %d\n", -ret);
462 kmm_free(dev);
463 }
464 }
465
466 return ret;
467}

Callers 3

sim_registerblockdeviceFunction · 0.85
mkrdFunction · 0.85
sim_bringupFunction · 0.85

Calls 4

kmm_zallocFunction · 0.85
register_blockdriverFunction · 0.85
kmm_freeFunction · 0.85
snprintfFunction · 0.50

Tested by

no test coverage detected