All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bmeng.cn@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 14/30] dm: part: Convert partition API use to linker lists
Date: Tue, 16 Feb 2016 22:25:43 +0800	[thread overview]
Message-ID: <CAEUhbmVMtj5rcz8Ckbqyce50XzZ4524uedNHyB3ix_QamaqkDA@mail.gmail.com> (raw)
In-Reply-To: <1455502619-16093-15-git-send-email-sjg@chromium.org>

Hi Simon,

On Mon, Feb 15, 2016 at 10:16 AM, Simon Glass <sjg@chromium.org> wrote:
> We can use linker lists instead of explicitly declaring each function.
> This makes the code shorter by avoiding switch() statements and lots of
> header file declarations.
>
> While this does clean up the code it introduces a few code issues with SPL.
> SPL never needs to print partition information since this all happens from
> commands. SPL mostly doesn't need to obtain information about a partition
> either, except in a few cases. Add these cases so that the code will be
> dropped from each partition driver when not needed. This avoids code bloat.
>
> I think this is still a win, since it is not a bad thing to be explicit
> about which features are used in SPL. But others may like to weigh in.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  disk/part.c       | 184 +++++++++++++++++-------------------------------------
>  disk/part_amiga.c |  16 +++--
>  disk/part_dos.c   |   9 ++-
>  disk/part_efi.c   |  10 ++-
>  disk/part_iso.c   |  16 +++--
>  disk/part_mac.c   |  16 +++--
>  include/part.h    |  79 ++++++++++++++---------
>  7 files changed, 157 insertions(+), 173 deletions(-)
>

[snip]

> diff --git a/disk/part_amiga.c b/disk/part_amiga.c
> index 5702c95..0f569f0 100644
> --- a/disk/part_amiga.c
> +++ b/disk/part_amiga.c
> @@ -207,7 +207,7 @@ struct bootcode_block *get_bootcode(struct blk_desc *dev_desc)
>   * Test if the given partition has an Amiga partition table/Rigid
>   * Disk block
>   */
> -int test_part_amiga(struct blk_desc *dev_desc)
> +static int test_part_amiga(struct blk_desc *dev_desc)
>  {
>      struct rigid_disk_block *rdb;
>      struct bootcode_block *bootcode;
> @@ -291,8 +291,8 @@ static struct partition_block *find_partition(struct blk_desc *dev_desc,
>  /*
>   * Get info about a partition
>   */
> -int get_partition_info_amiga(struct blk_desc *dev_desc, int part,
> -                            disk_partition_t *info)
> +static int get_partition_info_amiga(struct blk_desc *dev_desc, int part,
> +                                   disk_partition_t *info)
>  {
>      struct partition_block *p = find_partition(dev_desc, part-1);
>      struct amiga_part_geometry *g;
> @@ -319,7 +319,7 @@ int get_partition_info_amiga(struct blk_desc *dev_desc, int part,
>      return 0;
>  }
>
> -void print_part_amiga(struct blk_desc *dev_desc)
> +static void print_part_amiga(struct blk_desc *dev_desc)
>  {
>      struct rigid_disk_block *rdb;
>      struct bootcode_block *boot;
> @@ -379,4 +379,12 @@ void print_part_amiga(struct blk_desc *dev_desc)
>      }
>  }
>
> +U_BOOT_PART_TYPE(amiga) = {
> +       .name           = "AMIGA",
> +       .part_type      = PART_TYPE_AMIGA,
> +       .get_info       = get_partition_info_amiga,
> +       .print          = print_part_amiga,
> +       .test           = test_part_amiga,
> +};
> +
>  #endif
> diff --git a/disk/part_dos.c b/disk/part_dos.c
> index ea0315c..7567ed3 100644
> --- a/disk/part_dos.c
> +++ b/disk/part_dos.c
> @@ -87,7 +87,7 @@ static int test_block_type(unsigned char *buffer)
>  }
>
>
> -int test_part_dos(struct blk_desc *dev_desc)
> +static int test_part_dos(struct blk_desc *dev_desc)
>  {
>         ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz);
>
> @@ -295,5 +295,12 @@ int get_partition_info_dos(struct blk_desc *dev_desc, int part,
>         return get_partition_info_extended(dev_desc, 0, 0, 1, part, info, 0);
>  }
>
> +U_BOOT_PART_TYPE(dos) = {
> +       .name           = "DOS",
> +       .part_type      = PART_TYPE_DOS,
> +       .get_info       = part_get_info_ptr(get_partition_info_dos),

Does this compile?

> +       .print          = part_print_ptr(print_part_dos),

and this?

> +       .test           = test_part_dos,
> +};
>
>  #endif
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index 7bd840f..6f80877 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -319,7 +319,7 @@ int get_partition_info_efi_by_name(struct blk_desc *dev_desc,
>         return -2;
>  }
>
> -int test_part_efi(struct blk_desc *dev_desc)
> +static int test_part_efi(struct blk_desc *dev_desc)
>  {
>         ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
>
> @@ -953,4 +953,12 @@ static int is_pte_valid(gpt_entry * pte)
>                 return 1;
>         }
>  }
> +
> +U_BOOT_PART_TYPE(efi) = {
> +       .name           = "EFI",
> +       .part_type      = PART_TYPE_EFI,
> +       .get_info       = part_get_info_ptr(get_partition_info_efi),
> +       .print          = part_print_ptr(print_part_efi),

and these?

> +       .test           = test_part_efi,
> +};
>  #endif
> diff --git a/disk/part_iso.c b/disk/part_iso.c
> index 2984df5..1d72d23 100644
> --- a/disk/part_iso.c
> +++ b/disk/part_iso.c
> @@ -217,14 +217,13 @@ found:
>         return 0;
>  }
>
> -int get_partition_info_iso(struct blk_desc *dev_desc, int part_num,
> -                          disk_partition_t *info)
> +static int get_partition_info_iso(struct blk_desc *dev_desc, int part_num,
> +                                 disk_partition_t *info)
>  {
>         return(get_partition_info_iso_verb(dev_desc, part_num, info, 1));
>  }
>
> -
> -void print_part_iso(struct blk_desc *dev_desc)
> +static void print_part_iso(struct blk_desc *dev_desc)
>  {
>         disk_partition_t info;
>         int i;
> @@ -241,11 +240,18 @@ void print_part_iso(struct blk_desc *dev_desc)
>         } while (get_partition_info_iso_verb(dev_desc,i,&info,0)!=-1);
>  }
>
> -int test_part_iso(struct blk_desc *dev_desc)
> +static int test_part_iso(struct blk_desc *dev_desc)
>  {
>         disk_partition_t info;
>
>         return(get_partition_info_iso_verb(dev_desc,0,&info,0));
>  }
>
> +U_BOOT_PART_TYPE(iso) = {
> +       .name           = "ISO",
> +       .part_type      = PART_TYPE_ISO,
> +       .get_info       = get_partition_info_iso,
> +       .print          = print_part_iso,
> +       .test           = test_part_iso,
> +};
>  #endif
> diff --git a/disk/part_mac.c b/disk/part_mac.c
> index ae83495..3fb3b16 100644
> --- a/disk/part_mac.c
> +++ b/disk/part_mac.c
> @@ -40,7 +40,7 @@ static int part_mac_read_pdb(struct blk_desc *dev_desc, int part,
>  /*
>   * Test for a valid MAC partition
>   */
> -int test_part_mac(struct blk_desc *dev_desc)
> +static int test_part_mac(struct blk_desc *dev_desc)
>  {
>         ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
>         ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
> @@ -64,8 +64,7 @@ int test_part_mac(struct blk_desc *dev_desc)
>         return (0);
>  }
>
> -
> -void print_part_mac(struct blk_desc *dev_desc)
> +static void print_part_mac(struct blk_desc *dev_desc)
>  {
>         ulong i, n;
>         ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
> @@ -214,8 +213,8 @@ static int part_mac_read_pdb(struct blk_desc *dev_desc, int part,
>         /* NOTREACHED */
>  }
>
> -int get_partition_info_mac(struct blk_desc *dev_desc, int part,
> -                          disk_partition_t *info)
> +static int get_partition_info_mac(struct blk_desc *dev_desc, int part,
> +                                 disk_partition_t *info)
>  {
>         ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
>         ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
> @@ -238,4 +237,11 @@ int get_partition_info_mac(struct blk_desc *dev_desc, int part,
>         return (0);
>  }
>
> +U_BOOT_PART_TYPE(mac) = {
> +       .name           = "MAC",
> +       .part_type      = PART_TYPE_MAC,
> +       .get_info       = get_partition_info_mac,
> +       .print          = print_part_mac,
> +       .test           = test_part_mac,
> +};
>  #endif

[snip]

Regards,
Bin

  parent reply	other threads:[~2016-02-16 14:25 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-15  2:16 [U-Boot] [PATCH 00/30] dm: Add driver-model support for block drivers Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 01/30] dm: Drop the block_dev_desc_t typedef Simon Glass
2016-02-16 10:09   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 02/30] dm: pci: Break out the common region display code Simon Glass
2016-02-16 10:09   ` Bin Meng
2016-02-29  4:18     ` Simon Glass
2016-02-17  0:19   ` Stephen Warren
2016-02-15  2:16 ` [U-Boot] [PATCH 03/30] dm: part: Correct a sandbox build warning Simon Glass
2016-02-16 10:09   ` Bin Meng
2016-02-29  4:18     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 04/30] dm: fdtdec: " Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 05/30] dm: part: Drop the common.h header Simon Glass
2016-02-16 10:09   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 06/30] dm: Add a new header for block devices Simon Glass
2016-02-16 10:10   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 07/30] dm: blk: Convert interface type to an enum Simon Glass
2016-02-16 10:10   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 08/30] dm: blk: Add comments to a few functions Simon Glass
2016-02-16 10:10   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 09/30] dm: blk: Rename get_dev() to blk_get_dev() Simon Glass
2016-02-16 10:10   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 10/30] dm: blk: Rename get_device() to blk_get_device_str() Simon Glass
2016-02-16 14:02   ` Bin Meng
2016-02-16 23:14   ` Stephen Warren
2016-02-15  2:16 ` [U-Boot] [PATCH 11/30] dm: blk: Rename get_device_and_partition() Simon Glass
2016-02-16 14:02   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 12/30] dm: part: Add a cast to avoid a compiler warning Simon Glass
2016-02-16 14:02   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 13/30] dm: sandbox: Enable all partition types Simon Glass
2016-02-15 22:37   ` Tom Rini
2016-02-16 14:02   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 14/30] dm: part: Convert partition API use to linker lists Simon Glass
2016-02-15 22:37   ` Tom Rini
2016-02-16 14:25   ` Bin Meng [this message]
2016-02-29  4:18     ` Simon Glass
2016-02-17  6:41   ` Stephen Warren
2016-02-29  4:48     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 15/30] dm: part: Rename some partition functions Simon Glass
2016-02-16 14:25   ` Bin Meng
2016-02-29  4:19     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 16/30] dm: cbfs: Fix handling of invalid type Simon Glass
2016-02-16 14:51   ` Bin Meng
2016-02-29  4:19     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 17/30] dm: sandbox: Enable cbfs and cramfs Simon Glass
2016-02-16 14:51   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 18/30] dm: block: Rename device number member dev to devnum Simon Glass
2016-02-16 14:51   ` Bin Meng
2016-02-16 23:23   ` Stephen Warren
2016-02-29  4:19     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 19/30] dm: block: Adjust device calls to go through helpers function Simon Glass
2016-02-16 14:51   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 20/30] dm: usb: Avoid exceeding available array size for storage devices Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 21/30] dm: usb: Tidy up storage code ready for driver model conversion Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 22/30] dm: blk: Add a block-device uclass Simon Glass
2016-02-17  4:49   ` Bin Meng
2016-02-15  2:16 ` [U-Boot] [PATCH 23/30] dm: sandbox: Prepare block driver for driver-model conversion Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 24/30] dm: sandbox: Add driver-model block-device support for sandbox Simon Glass
2016-02-16 23:34   ` Stephen Warren
2016-02-29  4:19     ` Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 25/30] dm: usb: Convert USB storage to use driver-model for block devs Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 26/30] dm: usb: Unbind old block devices when shutting down USB Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 27/30] dm: sandbox: Switch over to use DM for block devices Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 28/30] dm: sandbox: Drop the pre-DM host implementation Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 29/30] dm: usb: Clean up USB after each test Simon Glass
2016-02-15  2:16 ` [U-Boot] [PATCH 30/30] dm: blk: Add tests for block devices Simon Glass
2016-02-15 22:37 ` [U-Boot] [PATCH 00/30] dm: Add driver-model support for block drivers Tom Rini
2016-02-29  4:19   ` Simon Glass
2016-02-16 23:43 ` Stephen Warren
2016-02-29  4:19   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEUhbmVMtj5rcz8Ckbqyce50XzZ4524uedNHyB3ix_QamaqkDA@mail.gmail.com \
    --to=bmeng.cn@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.