diff options
author | sascha <sascha@nomad.localdomain> | 2007-10-19 08:45:57 +0200 |
---|---|---|
committer | sascha <sascha@nomad.localdomain> | 2007-10-19 08:45:57 +0200 |
commit | 3b6d6a45e705efb64fe522158ed33f640073da12 (patch) | |
tree | a7f25b80f133f7046ad88b6a19ee320281922ffa /common/partition.c | |
parent | 98839f801049609613a964e0526083b66d236e5a (diff) | |
download | barebox-3b6d6a45e705efb64fe522158ed33f640073da12.tar.gz barebox-3b6d6a45e705efb64fe522158ed33f640073da12.tar.xz |
- Implement tree structure for devices
- Use device tree structure to implement partitions
- Let devinfo print a nice tree
- Introduce 'fixed' partitions which are not removable
- Fix mount: It was not possible to mount on a relative path.
Diffstat (limited to 'common/partition.c')
-rw-r--r-- | common/partition.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/common/partition.c b/common/partition.c index a37177c08d..98bae393a2 100644 --- a/common/partition.c +++ b/common/partition.c @@ -7,7 +7,8 @@ #include <partition.h> #include <xfuncs.h> -struct device_d *dev_add_partition(struct device_d *dev, unsigned long offset, size_t size, char *name) +struct device_d *dev_add_partition(struct device_d *dev, unsigned long offset, + size_t size, int flags, const char *name) { struct partition *part; @@ -24,8 +25,10 @@ struct device_d *dev_add_partition(struct device_d *dev, unsigned long offset, s part->offset = offset; part->physdev = dev; + part->flags = flags; register_device(&part->device); + dev_add_child(dev, &part->device); if (part->device.driver) return &part->device; @@ -81,15 +84,17 @@ static ssize_t part_write(struct device_d *dev, const void *buf, size_t count, u { struct partition *part = dev->type_data; - if (part->readonly) - return -EROFS; + if (part->flags & PARTITION_READONLY) + return -EROFS; else return dev_write(part->physdev, buf, count, offset + part->offset, flags); } static int part_probe(struct device_d *dev) { +#ifdef DEBUG struct partition *part = dev->type_data; +#endif debug("registering partition %s on device %s (size=0x%08x, name=%s)\n", dev->id, part->physdev->id, dev->size, part->name); |