From c036f9958b3719a949999ca4fe9866ba56b3f713 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Sat, 22 Dec 2007 15:43:19 +0200 Subject: ubi-utils: introduce ubinfo utility Add new handy UBI utility which prints various type of UBI information. This commit also includes a lot of fixes and cleanups in libubi, and other utilities. It was quite complex to separate this all out and I figured that nobody anyway would really need this, and decided to save my time for more useful things. Signed-off-by: Artem Bityutskiy --- ubi-utils/inc/libubi.h | 172 +++++++++++++++++++++++++++---------------------- 1 file changed, 96 insertions(+), 76 deletions(-) (limited to 'ubi-utils/inc') diff --git a/ubi-utils/inc/libubi.h b/ubi-utils/inc/libubi.h index d39c1b9..21be68a 100644 --- a/ubi-utils/inc/libubi.h +++ b/ubi-utils/inc/libubi.h @@ -40,7 +40,13 @@ typedef void * libubi_t; /** * struct ubi_mkvol_request - volume creation request. - * */ + * @vol_id: ID to assign to the new volume (%UBI_VOL_NUM_AUTO should be used to + * automatically assign ID) + * @alignment: volume alignment + * @bytes: volume size in bytes + * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) + * @name: volume name + */ struct ubi_mkvol_request { int vol_id; @@ -52,11 +58,12 @@ struct ubi_mkvol_request /** * struct ubi_info - general UBI information. - * - * @dev_count count of UBI devices in system - * @lowest_dev_num lowest UBI device number - * @highest_dev_num highest UBI device number - * @version UBI version + * @dev_count: count of UBI devices in system + * @lowest_dev_num: lowest UBI device number + * @highest_dev_num: highest UBI device number + * @version: UBI version + * @ctrl_major: major number of the UBI control device + * @ctrl_minor: minor number of the UBI control device */ struct ubi_info { @@ -64,26 +71,29 @@ struct ubi_info int lowest_dev_num; int highest_dev_num; int version; + int ctrl_major; + int ctrl_minor; }; /** * struct ubi_dev_info - UBI device information. - * - * @vol_count count of volumes on this UBI device - * @lowest_vol_num lowest volume number - * @highest_vol_num highest volume number - * @total_ebs total number of eraseblocks on this UBI device - * @avail_ebs how many eraseblocks are not used and available for new - * volumes - * @total_bytes @total_ebs * @eb_size - * @avail_bytes @avail_ebs * @eb_size - * @bad_count count of bad eraseblocks - * @eb_size size of UBI eraseblock - * @max_ec current highest erase counter value - * @bad_rsvd how many physical eraseblocks of the underlying flash - * device are reserved for bad eraseblocks handling - * @max_vol_count maximum count of volumes on this UBI device - * @min_io_size minimum input/output size of the UBI device + * @vol_count: count of volumes on this UBI device + * @lowest_vol_num: lowest volume number + * @highest_vol_num: highest volume number + * @major: major number of corresponding character device + * @minor: minor number of corresponding character device + * @total_ebs: total number of logical eraseblocks on this UBI device + * @avail_ebs: how many logical eraseblocks are not used and available for new + * volumes + * @total_bytes: @total_ebs * @eb_size + * @avail_bytes: @avail_ebs * @eb_size + * @bad_count: count of bad physical eraseblocks + * @eb_size: logical eraseblock size + * @max_ec: current highest erase counter value + * @bad_rsvd: how many physical eraseblocks of the underlying flash device are + * reserved for bad eraseblocks handling + * @max_vol_count: maximum possible number of volumes on this UBI device + * @min_io_size: minimum input/output unit size of the UBI device */ struct ubi_dev_info { @@ -91,6 +101,8 @@ struct ubi_dev_info int vol_count; int lowest_vol_num; int highest_vol_num; + int major; + int minor; int total_ebs; int avail_ebs; long long total_bytes; @@ -105,24 +117,31 @@ struct ubi_dev_info /** * struct ubi_vol_info - UBI volume information. - * - * @dev_num UBI device number the volume resides on - * @vol_id ID of this volume - * @type volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) - * @alignment alignemnt of this volume - * @data_bytes how many data bytes are stored on this volume (equivalent to - * @rsvd_bytes for dynamic volumes) - * @rsvd_bytes how many bytes are reserved for this volume - * @rsvd_ebs how many eraseblocks are reserved for this volume - * @eb_size logical eraseblock size of this volume (may be less then - * device's logical eraseblock size due to alignment) - * @corrupted the volume is corrupted if this flag is not zero - * @name volume name (null-terminated) + * @dev_num: UBI device number the volume resides on + * @vol_id: ID of this volume + * @major: major number of corresponding volume character device + * @minor: minor number of corresponding volume character device + * @dev_major: major number of corresponding UBI device character device + * @dev_minor: minor number of corresponding UBI device character device + * @type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) + * @alignment: alignemnt of this volume + * @data_bytes: how many data bytes are stored on this volume (equivalent to + * @rsvd_bytes for dynamic volumes) + * @rsvd_bytes: how many bytes are reserved for this volume + * @rsvd_ebs: how many logical eraseblocks are reserved for this volume + * @eb_size: logical eraseblock size of this volume (may be less then + * device's logical eraseblock size due to alignment) + * @corrupted: non-zero if the volume is corrupted + * @name: volume name (null-terminated) */ struct ubi_vol_info { int dev_num; int vol_id; + int major; + int minor; + int dev_major; + int dev_minor; int type; int alignment; long long data_bytes; @@ -135,24 +154,21 @@ struct ubi_vol_info /** * libubi_open - open UBI library. - * * This function initializes and opens the UBI library and returns UBI library * descriptor in case of success and %NULL in case of failure. */ libubi_t libubi_open(void); /** - * libubi_close - close UBI library - * + * libubi_close - close UBI library. * @desc UBI library descriptor */ void libubi_close(libubi_t desc); /** * ubi_get_info - get general UBI information. - * - * @info pointer to the &struct ubi_info object to fill - * @desc UBI library descriptor + * @info: pointer to the &struct ubi_info object to fill + * @desc: UBI library descriptor * * This function fills the passed @info object with general UBI information and * returns %0 in case of success and %-1 in case of failure. @@ -161,10 +177,9 @@ int ubi_get_info(libubi_t desc, struct ubi_info *info); /** * ubi_mkvol - create an UBI volume. - * - * @desc UBI library descriptor - * @node name of the UBI character device to create a volume at - * @req UBI volume creation request (defined at ) + * @desc: UBI library descriptor + * @node: name of the UBI character device to create a volume at + * @req: UBI volume creation request * * This function creates a UBI volume as described at @req and returns %0 in * case of success and %-1 in case of failure. The assigned volume ID is @@ -174,10 +189,9 @@ int ubi_mkvol(libubi_t desc, const char *node, struct ubi_mkvol_request *req); /** * ubi_rmvol - remove a UBI volume. - * - * @desc UBI library descriptor - * @node name of the UBI character device to remove a volume from - * @vol_id ID of the volume to remove + * @desc: UBI library descriptor + * @node: name of the UBI character device to remove a volume from + * @vol_id: ID of the volume to remove * * This function removes volume @vol_id from UBI device @node and returns %0 in * case of success and %-1 in case of failure. @@ -186,23 +200,33 @@ int ubi_rmvol(libubi_t desc, const char *node, int vol_id); /** * ubi_rsvol - re-size UBI volume. - * - * @desc UBI library descriptor - * @node name of the UBI character device owning the volume which should be - * re-sized - * @vol_id volume ID to re-size - * @bytes new volume size in bytes + * @desc: UBI library descriptor + * @node: name of the UBI character device owning the volume which should be + * re-sized + * @vol_id: volume ID to re-size + * @bytes: new volume size in bytes * * This function returns %0 in case of success and %-1 in case of error. */ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes); /** - * ubi_get_dev_info - get UBI device information. + * ubi_node_type - test UBI node type. + * @desc: UBI library descriptor + * @node: the node to test * - * @desc UBI library descriptor - * @node name of the UBI character device to fetch information about - * @info pointer to the &struct ubi_dev_info object to fill + * This function tests whether @node is a UBI device or volume node and returns + * %1 if this is an UBI device node, %2 if this is a volume node, and %-1 if + * this is not an UBI node or if an error occurred (the latter is indicated by + * a non-zero errno). + */ +int ubi_node_type(libubi_t desc, const char *node); + +/** + * ubi_get_dev_info - get UBI device information. + * @desc: UBI library descriptor + * @node: name of the UBI character device to fetch information about + * @info: pointer to the &struct ubi_dev_info object to fill * * This function fills the passed @info object with UBI device information and * returns %0 in case of success and %-1 in case of failure. @@ -212,10 +236,9 @@ int ubi_get_dev_info(libubi_t desc, const char *node, /** * ubi_get_dev_info1 - get UBI device information. - * - * @desc UBI library descriptor - * @dev_num UBI device number to fetch information about - * @info pointer to the &struct ubi_dev_info object to fill + * @desc: UBI library descriptor + * @dev_num: UBI device number to fetch information about + * @info: pointer to the &struct ubi_dev_info object to fill * * This function is identical to 'ubi_get_dev_info()' except that it accepts UBI * device number, not UBI character device. @@ -224,10 +247,9 @@ int ubi_get_dev_info1(libubi_t desc, int dev_num, struct ubi_dev_info *info); /** * ubi_get_vol_info - get UBI volume information. - * - * @desc UBI library descriptor - * @node name of the UBI volume character device to fetch information about - * @info pointer to the &struct ubi_vol_info object to fill + * @desc: UBI library descriptor + * @node: name of the UBI volume character device to fetch information about + * @info: pointer to the &struct ubi_vol_info object to fill * * This function fills the passed @info object with UBI volume information and * returns %0 in case of success and %-1 in case of failure. @@ -237,11 +259,10 @@ int ubi_get_vol_info(libubi_t desc, const char *node, /** * ubi_get_vol_info1 - get UBI volume information. - * - * @desc UBI library descriptor - * @dev_num UBI device number - * @vol_id ID of the UBI volume to fetch information about - * @info pointer to the &struct ubi_vol_info object to fill + * @desc: UBI library descriptor + * @dev_num: UBI device number + * @vol_id: ID of the UBI volume to fetch information about + * @info: pointer to the &struct ubi_vol_info object to fill * * This function is identical to 'ubi_get_vol_info()' except that it accepts UBI * volume number, not UBI volume character device. @@ -251,10 +272,9 @@ int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id, /** * ubi_update_start - start UBI volume update. - * - * @desc UBI library descriptor - * @fd volume character devie file descriptor - * @bytes how many bytes will be written to the volume + * @desc: UBI library descriptor + * @fd: volume character devie file descriptor + * @bytes: how many bytes will be written to the volume * * This function initiates UBI volume update and returns %0 in case of success * and %-1 in case of error. -- cgit v1.2.3