URI: 
       blkdiscard.c - ubase - suckless linux base utils
  HTML git clone git://git.suckless.org/ubase
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       blkdiscard.c (809B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include <sys/ioctl.h>
            3 #include <sys/mount.h>
            4 #include <sys/stat.h>
            5 #include <sys/types.h>
            6 
            7 #include <fcntl.h>
            8 #include <stdint.h>
            9 #include <unistd.h>
           10 
           11 #include "util.h"
           12 
           13 #define OFFSET_IDX        0
           14 #define LENGTH_IDX        1
           15 
           16 #define BLKDISCARD        _IO(0x12, 119)
           17 
           18 static void
           19 usage(void)
           20 {
           21         eprintf("usage: %s device\n", argv0);
           22 }
           23 
           24 int
           25 main(int argc, char *argv[])
           26 {
           27         uint64_t range[2];
           28         int fd;
           29 
           30         ARGBEGIN {
           31         default:
           32                 usage();
           33         } ARGEND
           34 
           35         if (argc != 1)
           36                 usage();
           37 
           38         fd = open(argv[0], O_RDWR);
           39         if (fd < 0)
           40                 eprintf("open: %s:", argv[0]);
           41         range[OFFSET_IDX] = 0;
           42         if (ioctl(fd, BLKGETSIZE64, &range[LENGTH_IDX]) < 0)
           43                 eprintf("BLKGETSIZE64: %s:", argv[0]);
           44         if (ioctl(fd, BLKDISCARD, range) < 0)
           45                 eprintf("BLKDISCARD: %s:", argv[0]);
           46         close(fd);
           47         return 0;
           48 }