예제 #1
0
int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
{
  struct fat_format_s fmt = FAT_FORMAT_INITIALIZER;
  char *fullpath = nsh_getfullpath(vtbl, argv[1]);
  int ret = ERROR;

  if (fullpath)
    {  
      ret = mkfatfs(fullpath, &fmt);
      if (ret < 0)
        {
          nsh_output(vtbl, g_fmtcmdfailed, argv[0], "mkfatfs", NSH_ERRNO);
        }
      nsh_freefullpath(fullpath);
    }
  return ret;
}
int usbmsc_archinitialize(void)
{
  uint8_t *pbuffer;
  int ret;

  pbuffer = (uint8_t *)kmm_malloc(BUFFER_SIZE);
  if (!pbuffer)
    {
      lowsyslog(LOG_ERR, "ERROR: Failed to allocate ramdisk of size %d\n",
                BUFFER_SIZE);
      return -ENOMEM;
    }

  /* Register a RAMDISK device to manage this RAM image */

  ret = ramdisk_register(CONFIG_SYSTEM_USBMSC_DEVMINOR1,
                         pbuffer,
                         USBMSC_NSECTORS,
                         USBMSC_SECTORSIZE,
                         RDFLAG_WRENABLED | RDFLAG_FUNLINK);
  if (ret < 0)
    {
      syslog(LOG_ERR,
             "ERROR: create_ramdisk: Failed to register ramdisk at %s: %d\n",
             g_source, -ret);
      kmm_free(pbuffer);
      return ret;
    }

  /* Create a FAT filesystem on the ramdisk */

  ret = mkfatfs(g_source, &g_fmt);
  if (ret < 0)
    {
      syslog(LOG_ERR,
             "ERROR: create_ramdisk: Failed to create FAT filesystem on ramdisk at %s\n",
             g_source);
      /* kmm_free(pbuffer); -- RAM disk is registered */
      return ret;
    }

  return 0;
}
예제 #3
0
파일: up_usbmsc.c 프로젝트: airlink/nuttx
int usbmsc_archinitialize(void)
{
  uint8_t *pbuffer;
  int ret;

  pbuffer = (uint8_t *) malloc (BUFFER_SIZE);
  if (!pbuffer)
    {
      lib_lowprintf ("usbmsc_archinitialize: Failed to allocate ramdisk of size %d\n",
                     BUFFER_SIZE);
      return -ENOMEM;
    }

  /* Register a RAMDISK device to manage this RAM image */
  
  ret = ramdisk_register(CONFIG_EXAMPLES_USBMSC_DEVMINOR1,
                         pbuffer,
                         USBMSC_NSECTORS,
                         USBMSC_SECTORSIZE,
                         true);
  if (ret < 0)
    {
      printf("create_ramdisk: Failed to register ramdisk at %s: %d\n",
             g_source, -ret);
      free(pbuffer);
      return ret;
    }

  /* Create a FAT filesystem on the ramdisk */

  ret = mkfatfs(g_source, &g_fmt);
  if (ret < 0)
    {
      printf("create_ramdisk: Failed to create FAT filesystem on ramdisk at %s\n",
             g_source);
      /* free(pbuffer); -- RAM disk is registered */
      return ret;
    }

  return 0;
}
예제 #4
0
int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
{
  struct fat_format_s fmt = FAT_FORMAT_INITIALIZER;
  FAR char *fullpath;
  bool badarg;
  int option;
  int ret = ERROR;

  /* mkfatfs [-F <fatsize>] <block-driver> */

  badarg = false;
  while ((option = getopt(argc, argv, ":F:")) != ERROR)
    {
      switch (option)
        {
          case 'F':
            fmt.ff_fattype = atoi(optarg);
            if (fmt.ff_fattype != 0  && fmt.ff_fattype != 12 &&
                fmt.ff_fattype != 16 && fmt.ff_fattype != 32)
              {
                nsh_output(vtbl, g_fmtargrange, argv[0]);
                badarg = true;
              }
            break;

         case ':':
            nsh_output(vtbl, g_fmtargrequired, argv[0]);
            badarg = true;
            break;

          case '?':
          default:
            nsh_output(vtbl, g_fmtarginvalid, argv[0]);
            badarg = true;
            break;
        }
    }

  /* If a bad argument was encountered, then return without processing the command */

  if (badarg)
    {
      return ERROR;
    }

  /* There should be exactly one parameter left on the command-line */

  if (optind == argc-1)
    {
      fullpath = nsh_getfullpath(vtbl, argv[optind]);
      if (!fullpath)
        {
          nsh_output(vtbl, g_fmtcmdfailed, argv[0], "nsh_getfullpath",
                     NSH_ERRNO);
          return ERROR;
        }
    }
  else if (optind >= argc)
    {
      nsh_output(vtbl, g_fmttoomanyargs, argv[0]);
      return ERROR;
    }
  else
    {
      nsh_output(vtbl, g_fmtargrequired, argv[0]);
      return ERROR;
    }

  /* Now format the FAT file system */

  ret = mkfatfs(fullpath, &fmt);
  if (ret < 0)
    {
      nsh_output(vtbl, g_fmtcmdfailed, argv[0], "mkfatfs", NSH_ERRNO);
    }

  nsh_freefullpath(fullpath);
  return ret;
}