root/include/uapi/linux/blkpg.h
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI__LINUX_BLKPG_H
#define _UAPI__LINUX_BLKPG_H

#include <linux/compiler.h>
#include <linux/ioctl.h>

#define BLKPG      _IO(0x12,105)

/* The argument structure */
struct blkpg_ioctl_arg {
        int op;
        int flags;
        int datalen;
        void __user *data;
};

/* The subfunctions (for the op field) */
#define BLKPG_ADD_PARTITION     1
#define BLKPG_DEL_PARTITION     2
#define BLKPG_RESIZE_PARTITION  3

/* Sizes of name fields. Unused at present. */
#define BLKPG_DEVNAMELTH        64
#define BLKPG_VOLNAMELTH        64

/* The data structure for ADD_PARTITION and DEL_PARTITION */
struct blkpg_partition {
        long long start;                /* starting offset in bytes */
        long long length;               /* length in bytes */
        int pno;                        /* partition number */
        char devname[BLKPG_DEVNAMELTH]; /* unused / ignored */
        char volname[BLKPG_VOLNAMELTH]; /* unused / ignore */
};

#endif /* _UAPI__LINUX_BLKPG_H */