Skip to contentSkip to conversation

ubi-utils: migrate to new libubi

PATCH In review Alexander Schmidt 2 participants 6 messages Oct 2, 2007 – Oct 3, 2007 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

cover ubi-utils: migrate to new libubi

This patchset migrates the remaining tools (pddcustomize, ubimirror and pfiflash) to the new libubi.

Changes since try2: I use PATH_MAX from limits.h now instead of a self-defined value

Changes since try1: I have discarded the libubi_common files, device paths are now integrated in every utility.

I've tested the new version with the scripts in ubi-utils/scripts/ubi_* and everything works fine.

 mtd-utils.orig/ubi-utils/inc/libubiold.h       |  310 ----------
 mtd-utils.orig/ubi-utils/src/libubiold.c       |  768 -------------------------
 mtd-utils.orig/ubi-utils/src/libubiold_int.h   |  119 ---
 mtd-utils.orig/ubi-utils/src/libubiold_sysfs.c |  232 -------
 mtd-utils.orig/ubi-utils/src/libubiold_sysfs.h |  109 ---
 ubi-utils/Makefile                             |    6
 ubi-utils/src/libpfiflash.c                    |  141 +++-
 ubi-utils/src/libubimirror.c                   |   51 +
 ubi-utils/src/pddcustomize.c                   |   47 -
 ubi-utils/src/pfiflash.c                       |    3
 ubi-utils/src/ubimirror.c                      |    3
 11 files changed, 171 insertions(+), 1618 deletions(-)

Kind regards,
Alexander Schmidt

#1 lore raw

Re: [PATCH 1/4 try3] ubi-utils: migrate pddcustomize

Migrate pddcustomize to the new libubi.

---
 ubi-utils/Makefile           |    2 -
 ubi-utils/src/pddcustomize.c |   47 ++++++++++++++++++++++++++-----------------
 2 files changed, 30 insertions(+), 19 deletions(-)
ubi-utils/Makefile +1 -1
Index: mtd-utils/ubi-utils/Makefile
===================================================================
@@ -43,7 +43,7 @@
 	$(CC) $(LDFLAGS) -o $@ $^
 
 pddcustomize: pddcustomize.o error.o libubimirror.o bootenv.o hashmap.o \
-		libubiold.o libubiold_sysfs.o crc32.o
+		libubi.o crc32.o
 	$(CC) $(LDFLAGS) -o $@ $^
 
 pfiflash: pfiflash.o libpfiflash.o list.o reader.o error.o libubimirror.o \
ubi-utils/src/pddcustomize.c +29 -18

109 lines not on this page · raw message

#2 lore raw

Re: [PATCH 2/4 try3] ubi-utils: migrate ubimirror

In reply to Alexander Schmidt

Migrate ubimirror to the new libubi.

---
 ubi-utils/Makefile           |    2 -
 ubi-utils/src/libubimirror.c |   51 ++++++++++++++++++++++++++++++-------------
 ubi-utils/src/ubimirror.c    |    3 +-
 3 files changed, 39 insertions(+), 17 deletions(-)
ubi-utils/Makefile +1 -1
Index: mtd-utils/ubi-utils/Makefile
===================================================================
@@ -51,7 +51,7 @@
 	$(CC) $(LDFLAGS) -o $@ $^
 
 ubimirror: ubimirror.o error.o libubimirror.o bootenv.o hashmap.o \
-		libubiold.o libubiold_sysfs.o crc32.o
+		libubi.o crc32.o
 	$(CC) $(LDFLAGS) -o $@ $^
 
 nand2bin: nand2bin.o nandecc.o nandcorr.o
ubi-utils/src/libubimirror.c +36 -15

113 lines not on this page · raw message

ubi-utils/src/ubimirror.c +2 -1
Index: mtd-utils/ubi-utils/src/ubimirror.c
===================================================================
@@ -19,6 +19,7 @@
  *
  * 1.2 Removed argp because we want to use uClibc.
  * 1.3 Minor cleanups
+ * 1.4 Migrated to new libubi
  */
 
 #include <stdio.h>
@@ -35,7 +36,7 @@
 #include "example_ubi.h"
 #include "ubimirror.h"
 
-#define PROGRAM_VERSION "1.3"
+#define PROGRAM_VERSION "1.4"
 
 typedef enum action_t {
 	ACT_NORMAL = 0,
#3 lore raw

Re: [PATCH 3/4 try3] ubi-utils: migrate pfiflash

In reply to Alexander Schmidt

Migrate pfiflash to the new libubi.

---
 ubi-utils/Makefile          |    2 
 ubi-utils/src/libpfiflash.c |  141 ++++++++++++++++++++++++++++++--------------
 ubi-utils/src/pfiflash.c    |    3 
 3 files changed, 102 insertions(+), 44 deletions(-)
ubi-utils/Makefile +1 -1
Index: mtd-utils/ubi-utils/Makefile
===================================================================
@@ -47,7 +47,7 @@
 	$(CC) $(LDFLAGS) -o $@ $^
 
 pfiflash: pfiflash.o libpfiflash.o list.o reader.o error.o libubimirror.o \
-		bootenv.o hashmap.o pfi.o libubiold.o libubiold_sysfs.o crc32.o
+		bootenv.o hashmap.o pfi.o libubi.o crc32.o
 	$(CC) $(LDFLAGS) -o $@ $^
 
 ubimirror: ubimirror.o error.o libubimirror.o bootenv.o hashmap.o \
ubi-utils/src/libpfiflash.c +99 -42

338 lines not on this page · raw message

ubi-utils/src/pfiflash.c +2 -1
Index: mtd-utils/ubi-utils/src/pfiflash.c
===================================================================
@@ -27,6 +27,7 @@
  * 1.3 removed argp parsing to be able to use uClib.
  * 1.4 Minor cleanups.
  * 1.5 Forgot to delete raw block before updating it.
+ * 1.6 Migrated to new libubi.
  */
 
 #include <unistd.h>
@@ -43,7 +44,7 @@
 #include "error.h"
 #include "config.h"
 
-#define PROGRAM_VERSION  "1.5"
+#define PROGRAM_VERSION  "1.6"
 
 static char doc[] = "\nVersion: " PROGRAM_VERSION "\n"
 	"pfiflash - a tool for updating a controller with PFI files.\n";
#4 lore raw

Re: [PATCH 4/4 try3] ubi-utils: remove libubiold

In reply to Alexander Schmidt

Remove the old libubi.

---
 ubi-utils/inc/libubiold.h       |  310 ----------------
 ubi-utils/src/libubiold.c       |  768 ----------------------------------------
 ubi-utils/src/libubiold_int.h   |  119 ------
 ubi-utils/src/libubiold_sysfs.c |  232 ------------
 ubi-utils/src/libubiold_sysfs.h |  109 -----
 5 files changed, 1538 deletions(-)
ubi-utils/inc/libubiold.h deleted +0 -310
Index: mtd-utils/ubi-utils/inc/libubiold.h
===================================================================
@@ -1,310 +0,0 @@
-#ifndef __UBI_H__
-#define __UBI_H__
-/*
- * Copyright (c) International Business Machines Corp., 2006
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * UBI (Unsorted Block Images) library.
- * @file	libubi.h
- * @author	Artem B. Bityutskiy
- * @author      Additions: Oliver Lohmann
- * @version	1.0
- */
-
-#include <stdint.h>
-#include <mtd/ubi-user.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @section eh Error Handling
- * The following error indication policy is used: in case of success, all
- * library functions return 0, in case of failure they either return UBI error
- * codes, or -1 if a system error occured; in the latter case the exact error
- * code has to be in the errno variable.
- *
- * @def UBI_ENOTFOUND
- *	@brief UBI was not found in the system.
- * @def UBI_EBUG
- *	@brief An error due to bug in kernel part of UBI in UBI library.
- * @def UBI_EINVAL
- *	@brief Invalid argument.
- * @def UBI_EMACS
- *	@brief Highest error value.
- */
-#define UBI_ENOTFOUND	1
-#define UBI_EBUG	2
-#define UBI_EINVAL	3
-#define UBI_EMAX	4
-
-
-/**
- * UBI library descriptor, vague for library users.
- */
-typedef struct ubi_lib *ubi_lib_t;
-
-/**
- * struct ubi_info - general information about UBI.
- *
- * @version    UBI version
- * @nlen_max   maximum length of names of volumes
- * @dev_count  count UBI devices in the system
- */
-struct ubi_info
-{
-	unsigned int version;
-	unsigned int nlen_max;
-	unsigned int dev_count;
-};
-
-/**
- * struct ubi_dev_info - information about an UBI device
- *
- * @wear       average number of erasures of flash erasable blocks
- * @major      major number of the corresponding character device
- * @minor      minor number of the corresponding character device
- * @eb_size    size of eraseblocks
- * @total_ebs  total count of eraseblocks
- * @avail_ebs  count of unused eraseblock available for new volumes
- * @vol_count  total count of volumes in this UBI device
- */
-struct ubi_dev_info
-{
-	unsigned long long wear;
-	unsigned int major;
-	unsigned int minor;
-	unsigned int eb_size;
-	unsigned int total_ebs;
-	unsigned int avail_ebs;
-	unsigned int vol_count;
-};
-
-/**
- * struct ubi_vol_info - information about an UBI volume
- *
- * @bytes        volume size in bytes
- * @eraseblocks  volume size in eraseblocks
- * @major        major number of the corresponding character device
- * @minor        minor number of the corresponding character device
- * @type         volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @dev_path	 device path to volume
- * @name         volume name
- */
-struct ubi_vol_info
-{
-	unsigned long long bytes;
-	unsigned int eraseblocks;
-	unsigned int major;
-	unsigned int minor;
-	int type;
-	char *dev_path;
-	char *name;
-};
-
-/**
- * ubi_mkvol - create a dynamic UBI volume.
- *
- * @desc       UBI library descriptor
- * @devn       Number of UBI device to create new volume on
- * @vol_id     volume ID to assign to the new volume
- * @vol_type   volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @bytes      volume size in bytes
- * @alignment  volume alignment
- * @name       volume name
- *
- * This function creates new UBI volume. If @vol_id is %UBI_VOLN_AUTO, then
- * volume number is assigned automatically. This function returns positive
- * volume number of the new volume in case of success or %-1 in case of
- * failure.
- */
-int ubi_mkvol(ubi_lib_t desc, int devn, int vol_id, int vol_type,
-	      long long bytes, int alignment, const char *name);
-
-/**
- * ubi_rmvol - remove a volume.
- *
- * @desc       UBI library descriptor
- * @devn       Number of UBI device to remove volume from
- * @vol_id     volume ID to remove
- *
- * This function returns zero in case of success or %-1 in case of failure.
- */
-int ubi_rmvol(ubi_lib_t desc, int devn, int vol_id);
-
-/**
- * ubi_get_info - get UBI information.
- *
- * @desc  UBI library descriptor
- * @ubi   UBI information is returned here
- *
- * This function retrieves information about UBI and puts it to @ubi. Returns
- * zero in case of success and %-1 in case of failure.
- */
-int ubi_get_info(ubi_lib_t desc, struct ubi_info *ubi);
-
-/**
- * ubi_vol_open - open a UBI volume
- *
- * @desc	UBI library descriptor
- * @devn	Number of UBI device on which to open the volume
- * @vol_id	Number of UBI device on which to open the volume
- * @flags	Flags to pass to open()
- *
- * This function opens a UBI volume on a given UBI device.  It returns
- * the file descriptor of the opened volume device.  In case of an
- * error %-1 is returned and errno is set appropriately.
- */
-int ubi_vol_open(ubi_lib_t desc, int devn, int vol_id, int flags);
-
-/**
- * ubi_vol_close - close a UBI volume
- *
- * @vol_fd	file descriptor of UBI volume to close
- *
- * This function closes the given UBI device.
- */
-int ubi_vol_close(int vol_fd);
-
-/**
- * ubi_vol_update - initiate volume update on a UBI volume
- * @vol_fd	File descriptor of UBI volume to update
- * @bytes	No. of bytes which shall be written.
- *
- * Initiates a volume update on a given volume.  The caller must then
- * actually write the appropriate number of bytes to the volume by
- * calling write().  Returns 0 on success, else error.
- */
-int ubi_vol_update(int vol_fd, unsigned long long bytes);
-
-/**
- * ubi_vol_fopen_read - open a volume for reading, returning a FILE *
- * @desc	UBI library descriptor
- * @devn	UBI device number
- * @vol_id	volume ID to read
- *
- * Opens a volume for reading.  Reading itself can then be performed
- * with fread().  The stream can be closed with fclose().  Returns a
- * stream on success, else NULL.
- */
-FILE *
-ubi_vol_fopen_read(ubi_lib_t desc, int devn, uint32_t vol_id);
-
-/**
- * ubi_vol_fopen_update - open a volume for writing, returning a FILE *
- * @desc	UBI library descriptor
- * @devn	UBI device number
- * @vol_id	volume ID to update
- * @bytes	No. of bytes which shall be written.
- *
- * Initiates a volume update on a given volume.  The caller must then
- * actually write the appropriate number of bytes to the volume by
- * calling fwrite().  The file can be closed with fclose().  Returns a
- * stream on success, else NULL.
- */
-FILE *
-ubi_vol_fopen_update(ubi_lib_t desc, int devn, uint32_t vol_id,
-		     unsigned long long bytes);
-
-/**
- * ubi_vol_get_used_bytes - determine used bytes in a UBI volume
- * @vol_fd	File descriptor of UBI volume
- * @bytes	Pointer to result
- *
- * Returns 0 on success, else error.
- */
-int ubi_vol_get_used_bytes(int vol_fd, unsigned long long *bytes);
-
-/**
- * ubi_open - open UBI library.
- *
- * @desc  A pointer to an UBI library descriptor
- *
- * Returns zero in case of success.
- */
-int ubi_open(ubi_lib_t *desc);
-
-/**
- * ubi_close - close UBI library.
- *
- * @desc  A pointer to an UBI library descriptor
- */
-int ubi_close(ubi_lib_t *desc);
-
-
-/**
- * ubi_perror - print UBI error.
- *
- * @prefix  a prefix string to prepend to the error message
- * @code    error code
- *
- * If @code is %-1, this function calls 'perror()'
- */
-void ubi_perror(const char *prefix, int code);
-
-/**
- * ubi_set_cdev_pattern - set 'sprintf()'-like pattern of paths to UBI
- * character devices.
- *
- * @desc     UBI library descriptor
- * @pattern  the pattern to set
- *
- * The default UBI character device path is "/dev/ubi%u".
- */
-int ubi_set_cdev_pattern(ubi_lib_t desc, const char *pattern);
-
-/**
- * ubi_get_dev_info get information about an UBI device.
- *
- * @desc  UBI library descriptor
- * @devn  UBI device number
- * @di    the requested information is returned here
- */
-int ubi_get_dev_info(ubi_lib_t desc, unsigned int devn,
-		struct ubi_dev_info *di);
-
-/**
- * ubi_set_vol_cdev_pattern - set 'sprintf()'-like pattµern ofpaths to UBI
- * volume character devices.
- *
- * @desc     UBI library descriptor
- * @pattern  the pattern to set
- *
- * The default UBI character device path is "/dev/ubi%u_%u".
- */
-int ubi_set_vol_cdev_pattern(ubi_lib_t desc, const char *pattern);
-
-/**
- * ubi_get_vol_info - get information about an UBI volume
- *
- * @desc  UBI library descriptor
- * @devn  UBI device number the volume belongs to
- * @vol_id  the requested volume number
- * @vi    volume information is returned here
- *
- * Users must free the volume name string @vi->name.
- */
-int ubi_get_vol_info(ubi_lib_t desc, unsigned int devn, unsigned int vol_id,
-		struct ubi_vol_info *vi);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !__UBI_H__ */
ubi-utils/src/libubiold.c deleted +0 -768

768 lines not on this page · raw message

ubi-utils/src/libubiold_int.h deleted +0 -119

119 lines not on this page · raw message

ubi-utils/src/libubiold_sysfs.c deleted +0 -232

232 lines not on this page · raw message

ubi-utils/src/libubiold_sysfs.h deleted +0 -109

109 lines not on this page · raw message

#5 lore raw
In reply to Alexander Schmidt
Quoted 11 lines · Alexander Schmidt

This patchset migrates the remaining tools (pddcustomize, ubimirror and pfiflash) to the new libubi.

Changes since try2: I use PATH_MAX from limits.h now instead of a self-defined value

Changes since try1: I have discarded the libubi_common files, device paths are now integrated in every utility.

I've tested the new version with the scripts in ubi-utils/scripts/ubi_* and everything works fine.

Thanks! Committed.

Signature · 2 lines
Best regards,
Artem Bityutskiy (Битюцкий Артём)