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 09:22:59 +0200 [thread overview]
Message-ID: <4092011.oPyBLZ8jbN@bloomfield> (raw)
In-Reply-To: <201209202203.05607.marex@denx.de>
On Thursday 20 of September 2012 22:03:05 Marek Vasut wrote:
> Dear Pavel Herrmann,
>
> [..]
>
> > +#define BLOCKDEV_IFTYPE_BITS 4
> > +#define BLOCKDEV_IFTYPE_COUNT (1<<BLOCKDEV_IFTYPE_BITS)
> > +#define BLOCKDEV_IFTYPE_MAX BLOCKDEV_IFTYPE_COUNT-1
>
> I saw this in blockdev.h
My bad then, sorry.
...
> > +}
> > +
> > +static int replace(struct core_instance *core, struct instance *new,
> > + struct instance *old)
> > +{
> > + struct blockdev_core_entry *entry = get_entry_by_instance(old);
> > +
> > + if (!entry)
> > + return -ENOENT;
> > +
> > + entry->instance = new;
> > +
> > + return 0;
> > +}
> > +
> > +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?
> > +{
> > + 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?
No idea what you mean by "one or the other" - you need all this code for it to
work.
> > +/* 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
next prev parent reply other threads:[~2012-09-21 7:22 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 [this message]
2012-09-21 12:47 ` Marek Vasut
2012-09-21 13:18 ` Pavel Herrmann
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=4092011.oPyBLZ8jbN@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 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.