partition.c 718 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <linux/types.h>
  2. #include <linux/genhd.h>
  3. struct hd_struct *get_part(char *name)
  4. {
  5. dev_t devt;
  6. int partno;
  7. struct disk_part_iter piter;
  8. struct gendisk *disk;
  9. struct hd_struct *part = NULL;
  10. if (!name)
  11. return part;
  12. devt = blk_lookup_devt("mmcblk0", 0);
  13. disk = get_gendisk(devt, &partno);
  14. if (!disk || get_capacity(disk) == 0)
  15. return 0;
  16. disk_part_iter_init(&piter, disk, 0);
  17. while ((part = disk_part_iter_next(&piter))) {
  18. if (part->info && !strcmp(part->info->volname, name)) {
  19. get_device(part_to_dev(part));
  20. break;
  21. }
  22. }
  23. disk_part_iter_exit(&piter);
  24. return part;
  25. }
  26. EXPORT_SYMBOL(get_part);
  27. void put_part(struct hd_struct *part)
  28. {
  29. disk_put_part(part);
  30. }
  31. EXPORT_SYMBOL(put_part);