如何在 Linux 驱动程序中列出 MMC 分区?

How can I list MMC partitions in a Linux driver?

我正在尝试读取存储在 eMMC 上的 U-Boot 环境,但我不知道如何列出磁盘。我正在创建的驱动程序与 mmc 设备驱动程序分开 (/dev/mmcblk0p1)。

我已经发现 mmcblk0 的分区是 struct mmc_part entries in struct mmc_card. Basically I'm searching for the mmc variant of __mtd_next_device


编辑 1:
我发现我可以得到一个 block_device struct through bdget,但是 gendisk 指向 NULL

struct block_device *my_bdevice;
struct gendisk *my_gdisk;
my_bdevice = bdget(179);
my_gdisk = part_to_disk(my_bdevice->bd_part);
if (!my_gdisk) goto end; // Goes to end..

在我上面的代码中,my_bdevice = bdget(179); 是错误的:

dev_t devt = blk_lookup_devt("mmcblk0", 0);
my_bdevice = bdget(devt);