#define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #ifndef BLKRRPART #warning BLKRRPART undefined /* Err, this doesn't yield the expected value :( */ //#define BLKRRPART _IO(0x12,95) /* re-read partition table */ #define BLKRRPART 0x125f #endif int main (int argc, char **argv) { error_t err; #if 0 /* goesnt :( */ if (argc != 2) error (1, 0, "Usage: %s ", argv[0]); int fd; fd = open (argv[1], O_RDWR); if (fd < 0) error (1, errno, "%s", argv[1]); if (ioctl (fd, BLKRRPART) != 0) error (1, errno, "ioctl (%d, BLKRRPART)", fd); close (fd); #else if (argc != 2) error (1, 0, "Usage: %s ", argv[0]); mach_port_t dev, device_master; err = get_privileged_ports (NULL, &device_master); if (err) error (1, err, "get_privileged_ports"); err = device_open (device_master, D_READ, argv[1], &dev); if (err) error (1, err, "device_open"); err = device_set_status (dev, BLKRRPART, 0, 0); if (err) error (1, err, "device_set_status"); #endif return 0; }