Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/Other, команды версии: Ver.4     Ver.9


blockdev

Комментарии в файле blockdev.c :

usage: blockdev --OPTION... BLOCKDEV...

Вызов ioctl(s) на каждом из перечисленных блочных устройств
  • --setro Установить только чтение
  • --setrw Установить чтение и запись
  • --getro Получить только чтение Получить --getss размер сектора
  • --getbsz Получить размер блока
  • --setbsz БАЙТЫ Установить размер блока
  • --getsz Получить размер устройства в 512-байтных секторах
  • --getsize Получить размер устройства в секторах (устарело)
  • --getsize64 Получить размер устройства в байтах Получить
  • --getra упреждающее чтение в 512-байтовых секторах
  • --setra СЕКТОРЫ Установить упреждающее чтение
  • --flushbufs Очистить буферы
  • --rereadpt Перечитать таблицу разделов

  • usage: blockdev --OPTION... BLOCKDEV...

    Call ioctl(s) on each listed block device
  • --setro Set read only
  • --setrw Set read write
  • --getro Get read only
  • --getss Get sector size
  • --getbsz Get block size
  • --setbsz BYTES Set block size
  • --getsz Get device size in 512-byte sectors
  • --getsize Get device size in sectors (deprecated)
  • --getsize64 Get device size in bytes
  • --getra Get readahead in 512-byte sectors
  • --setra SECTORS Set readahead
  • --flushbufs Flush buffers
  • --rereadpt Reread partition table

  • Исходный текст в файле blockdev.c

    #define FOR_blockdev
    #include "toys.h"
    #include <linux/fs.h>
    
    GLOBALS(
      long setbsz, setra;
    )
    
    void blockdev_main(void)
    {
      int cmds[] = {BLKRRPART, BLKFLSBUF, BLKRASET, BLKRAGET, BLKGETSIZE64, BLKGETSIZE, BLKGETSIZE64,
                    BLKBSZSET, BLKBSZGET, BLKSSZGET, BLKROGET, BLKROSET, BLKROSET};
      char **ss;
      long long val = 0;
    
      if (!toys.optflags) help_exit("need --option");
    
      for (ss = toys.optargs;  *ss; ss++) {
        int fd = xopenro(*ss), i;
    
        // Command line order discarded so perform multiple operations in flag order
        for (i = 0; i < 32; i++) {
          long flag = toys.optflags & (1<<i);
    
          if (!flag) continue;
    
          if (flag & FLAG_setbsz) val = TT.setbsz;
          else val = !!(flag & FLAG_setro);
    
          if (flag & FLAG_setra) val = TT.setra;
    
          xioctl(fd, cmds[i], &val);
    
          flag &= FLAG_setbsz|FLAG_setro|FLAG_flushbufs|FLAG_rereadpt|FLAG_setrw|FLAG_setbsz;
          if (!flag) printf("%lld\n", (toys.optflags & FLAG_getsz) ? val >> 9: val);
        }
        xclose(fd);
      }
    }