1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI__LINUX_BLKPG_H
3 #define _UAPI__LINUX_BLKPG_H
4 
5 /*
6  * Partition table and disk geometry handling
7  *
8  * A single ioctl with lots of subfunctions:
9  *
10  * Device number stuff:
11  *    get_whole_disk()		(given the device number of a partition,
12  *                               find the device number of the encompassing disk)
13  *    get_all_partitions()	(given the device number of a disk, return the
14  *				 device numbers of all its known partitions)
15  *
16  * Partition stuff:
17  *    add_partition()
18  *    delete_partition()
19  *    test_partition_in_use()	(also for test_disk_in_use)
20  *
21  * Geometry stuff:
22  *    get_geometry()
23  *    set_geometry()
24  *    get_bios_drivedata()
25  *
26  * For today, only the partition stuff - aeb, 990515
27  */
28 #include <linux/compiler.h>
29 #include <linux/ioctl.h>
30 
31 #define BLKPG      _IO(0x12,105)
32 
33 /* The argument structure */
34 struct blkpg_ioctl_arg {
35         int op;
36         int flags;
37         int datalen;
38         void __user *data;
39 };
40 
41 /* The subfunctions (for the op field) */
42 #define BLKPG_ADD_PARTITION	1
43 #define BLKPG_DEL_PARTITION	2
44 #define BLKPG_RESIZE_PARTITION	3
45 
46 /* Sizes of name fields. Unused at present. */
47 #define BLKPG_DEVNAMELTH	64
48 #define BLKPG_VOLNAMELTH	64
49 
50 /* The data structure for ADD_PARTITION and DEL_PARTITION */
51 struct blkpg_partition {
52 	long long start;		/* starting offset in bytes */
53 	long long length;		/* length in bytes */
54 	int pno;			/* partition number */
55 	char devname[BLKPG_DEVNAMELTH];	/* partition name, like sda5 or c0d1p2,
56 					   to be used in kernel messages */
57 	char volname[BLKPG_VOLNAMELTH];	/* volume label */
58 };
59 
60 #endif /* _UAPI__LINUX_BLKPG_H */
61