From: Pavel Herrmann <morpheus.ibis@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/11] DM: add support for scanning DOS partitions to blockdev core
Date: Fri, 21 Sep 2012 15:18:38 +0200 [thread overview]
Message-ID: <4576803.KJR9ZLcVKI@bloomfield> (raw)
In-Reply-To: <201209211447.24513.marex@denx.de>
On Friday 21 of September 2012 14:47:24 Marek Vasut wrote:
> Dear Pavel Herrmann,
>
> [...]
>
> > > > +static int init(struct core_instance *core)
> > >
> > > I'd say, rename it to block_core_init() or something, so the syms in
> > > u-boot.map are unique.
> >
> > thic being static, how could it show in u-boot.map?
>
> Argh, not u-boot.map, sorry. But it's much easier for git grep to look up
> unique syms than this.
ah, OK then
> > > > +{
> > > > + INIT_LIST_HEAD(&core->succ);
> > > > + core->private_data = NULL;
> > > > +
> > > > + return 0;
> > > > +}
> > > > +
> > > > +static int reloc(struct core_instance *core, struct core_instance
> > > > *old) +{
> > > > + struct blockdev_core_entry *entry, *new;
> > > > +
> > > > + /* no private_data to copy, yet */
> > > > +
> > > > + /* fixup links in old list and prepare new list head */
> > > > + /* FIXME */
> > > > + /* list_fix_reloc(&old->succ); */
> > > > + INIT_LIST_HEAD(&core->succ);
> > > > + core->private_data = NULL;
> > > > +
> > > > + /* copy list entries to new memory */
> > > > + list_for_each_entry(entry, &old->succ, list) {
> > > > + new = malloc(sizeof(*new));
> > > > + if (!new)
> > > > + return -ENOMEM;
> > > > +
> > > > + INIT_LIST_HEAD(&new->list);
> > > > + new->instance = entry->instance;
> > > > + new->ops = entry->ops;
> > > > + new->name = entry->name;
> > > > + list_add_tail(&new->list, &core->succ);
> > > > + /*no free at this point, old memory should not be freed*/
> > > > + }
> > > > +
> > > > + return 0;
> > > > +}
> > > > +
> > > > +static int destroy(struct core_instance *core)
> > > > +{
> > > > + struct blockdev_core_entry *entry, *n;
> > > > +
> > > > + /* destroy private data */
> > > > + free(core->private_data);
> > > > + core->private_data = NULL;
> > > > +
> > > > + /* destroy successor list */
> > > > + list_for_each_entry_safe(entry, n, &core->succ, list) {
> > > > + list_del(&entry->list);
> > > > + free(entry);
> > > > + }
> > > > +
> > > > + return 0;
> > > > +}
> > > > +
> > > > +U_BOOT_CORE(CORE_BLOCKDEV,
> > > > + init,
> > > > + reloc,
> > > > + destroy,
> > > > + get_count,
> > > > + get_child,
> > > > + bind,
> > > > + unbind,
> > > > + replace);
> > >
> > > Sep the stuff below away into separate file. Conditionally compile in
> > > one
> > > or the other.
> >
> > I distinctly remember you saying to put all this into one file (as opposed
> > to 3 it was before), so why the turn-around now?
>
> Well, I didn't see the code before, so I couldn't make a firm decision,
> sorry.
> > No idea what you mean by "one or the other" - you need all this code for
> > it
> > to work.
>
> You need the "driver wrapping API" if DM is enabled? I do not understand
> this, please elaborate!
>
> What about having a common part for both cases and then compile either the
> DM part or non-DM part conditionally?
this is all DM-only.
driver-wrapping API is wrapper/proxy functions to driver ops (aka it wraps
around the ops, doing lookup and activate and whatnot), not a wrapper for old
API (which would be in a driver mind you)
> > > > +/* Driver wrapping API */
> > > > +lbaint_t blockdev_read(struct instance *i, lbaint_t start, lbaint_t
> > > > blkcnt, + void *buffer)
> > > > +{
> > > > + struct blockdev_core_entry *entry = NULL;
> > > > + struct blockdev_ops *device_ops = NULL;
> > > > + int error;
> > > > +
> > > > + entry = get_entry_by_instance(i);
> > > > + if (!entry)
> > > > + return -ENOENT;
> > > > +
> > > > + error = driver_activate(i);
> > > > + if (error)
> > > > + return error;
> > > > +
> > > > + device_ops = entry->ops;
> > > > + if (!device_ops || !device_ops->read)
> > > > + return -EINVAL;
> > > > +
> > > > + return device_ops->read(i, start, blkcnt, buffer);
> > > > +}
> >
> > Pavel Herrmann
>
> Best regards,
> Marek Vasut
next prev parent reply other threads:[~2012-09-21 13:18 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-20 19:37 [U-Boot] [PATCH 00/11] Add DM blockdev subsystem Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 01/11] DM: add block device core Pavel Herrmann
2012-09-20 19:58 ` Marek Vasut
2012-09-21 7:11 ` Pavel Herrmann
2012-09-21 12:39 ` Marek Vasut
2012-09-21 13:27 ` Pavel Herrmann
2012-09-21 13:53 ` Marek Vasut
2012-09-21 14:57 ` Pavel Herrmann
2012-09-21 15:34 ` Marek Vasut
2012-09-21 15:48 ` Pavel Herrmann
2012-09-21 15:55 ` Marek Vasut
2012-09-21 17:19 ` Pavel Herrmann
2012-09-21 18:00 ` Marek Vasut
2012-09-21 18:53 ` Pavel Herrmann
2012-09-21 19:17 ` Marek Vasut
2012-09-21 19:29 ` Pavel Herrmann
2012-09-21 21:11 ` Marek Vasut
2012-09-21 23:43 ` Pavel Herrmann
2012-09-22 0:09 ` Marek Vasut
2012-09-22 9:39 ` Pavel Herrmann
2012-09-22 13:33 ` Marek Vasut
2012-09-22 13:59 ` Pavel Herrmann
2012-09-24 12:23 ` Pavel Herrmann
2012-09-20 20:49 ` [U-Boot] [U-Boot-DM] " Vikram Narayanan
2012-09-21 7:09 ` Pavel Herrmann
2012-09-21 12:39 ` Marek Vasut
2012-09-20 19:37 ` [U-Boot] [PATCH 02/11] DM: add support for scanning DOS partitions to blockdev core Pavel Herrmann
2012-09-20 20:03 ` Marek Vasut
2012-09-21 7:22 ` Pavel Herrmann
2012-09-21 12:47 ` Marek Vasut
2012-09-21 13:18 ` Pavel Herrmann [this message]
2012-09-21 13:54 ` Marek Vasut
2012-09-20 19:37 ` [U-Boot] [PATCH 03/11] DM: add block controller core Pavel Herrmann
2012-09-20 20:05 ` Marek Vasut
2012-09-21 7:21 ` Pavel Herrmann
2012-09-21 12:51 ` Marek Vasut
2012-09-21 13:14 ` Pavel Herrmann
2012-09-21 13:56 ` Marek Vasut
2012-09-21 15:04 ` Pavel Herrmann
2012-09-21 13:33 ` Pavel Herrmann
2012-09-21 13:58 ` Marek Vasut
2012-09-21 15:09 ` Pavel Herrmann
2012-09-21 15:39 ` Marek Vasut
2012-09-21 15:46 ` Pavel Herrmann
2012-09-21 16:08 ` Marek Vasut
2012-09-21 17:22 ` Pavel Herrmann
2012-09-21 18:01 ` Marek Vasut
2012-09-21 19:15 ` Pavel Herrmann
2012-09-21 19:22 ` Marek Vasut
2012-09-20 19:37 ` [U-Boot] [PATCH 04/11] DM: add sata_legacy driver for blockctrl Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 05/11] DM: add ata and partition blockdev drivers Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 06/11] DM: add cmd_block command Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 07/11] DM: use new blockdev API in FAT Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 08/11] DM: use new blockdev API in ext2 Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 09/11] DM: use new blockdev API in reiserfs Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 10/11] DM: use new blockdev API in ZFS Pavel Herrmann
2012-09-20 19:37 ` [U-Boot] [PATCH 11/11] DM: switch sandbox to DM blockdev Pavel Herrmann
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=4576803.KJR9ZLcVKI@bloomfield \
--to=morpheus.ibis@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox