diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2016-09-01 15:52:33 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2016-11-17 11:36:56 +0100 |
commit | db4146e84f3310a1e1de6f6d45f2ac35a0b0a604 (patch) | |
tree | 4046be3c7f438e5ae2ed4ea9a28bb6f435e2f619 /ubi-utils/include | |
parent | f4ec4511d0729802e783b1757d6bcd556737510e (diff) |
Move ubi-utils libraries to common library location
Historically, the mtd-utils and ubi-utils were seperate packages. The
ubi-utils were at some point merged into the mtd-utils. They first
appeared in the release tar-ball in version 1.1.0 in their own
sub-hirarchy with their own buildsystem, readme, documentation, etc.
A lot of the duplicated stuff got centralized/removed over time.
This patch further cleans up the directory hirarchy duplication by
moving common libraries from the ubi-utils/ into the central lib/
and include/ directories in the top directory of the mtd-utils package.
This includes:
- libuib.a & libubigen.a used by the ubi utilities
- libscan.a currently only used by ubiformat
- libiniparser.a used by ubinize
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'ubi-utils/include')
-rw-r--r-- | ubi-utils/include/dictionary.h | 174 | ||||
-rw-r--r-- | ubi-utils/include/libiniparser.h | 280 | ||||
-rw-r--r-- | ubi-utils/include/libscan.h | 113 | ||||
-rw-r--r-- | ubi-utils/include/libubi.h | 485 | ||||
-rw-r--r-- | ubi-utils/include/libubigen.h | 195 |
5 files changed, 0 insertions, 1247 deletions
diff --git a/ubi-utils/include/dictionary.h b/ubi-utils/include/dictionary.h deleted file mode 100644 index c7d1790..0000000 --- a/ubi-utils/include/dictionary.h +++ /dev/null @@ -1,174 +0,0 @@ - -/*-------------------------------------------------------------------------*/ -/** - @file dictionary.h - @author N. Devillard - @date Sep 2007 - @version $Revision: 1.12 $ - @brief Implements a dictionary for string variables. - - This module implements a simple dictionary object, i.e. a list - of string/string associations. This object is useful to store e.g. - informations retrieved from a configuration file (ini files). -*/ -/*--------------------------------------------------------------------------*/ - -/* - $Id: dictionary.h,v 1.12 2007-11-23 21:37:00 ndevilla Exp $ - $Author: ndevilla $ - $Date: 2007-11-23 21:37:00 $ - $Revision: 1.12 $ -*/ - -#ifndef _DICTIONARY_H_ -#define _DICTIONARY_H_ - -/*--------------------------------------------------------------------------- - Includes - ---------------------------------------------------------------------------*/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -/*--------------------------------------------------------------------------- - New types - ---------------------------------------------------------------------------*/ - - -/*-------------------------------------------------------------------------*/ -/** - @brief Dictionary object - - This object contains a list of string/string associations. Each - association is identified by a unique string key. Looking up values - in the dictionary is speeded up by the use of a (hopefully collision-free) - hash function. - */ -/*-------------------------------------------------------------------------*/ -typedef struct _dictionary_ { - int n ; /** Number of entries in dictionary */ - int size ; /** Storage size */ - char ** val ; /** List of string values */ - char ** key ; /** List of string keys */ - unsigned * hash ; /** List of hash values for keys */ -} dictionary ; - - -/*--------------------------------------------------------------------------- - Function prototypes - ---------------------------------------------------------------------------*/ - -/*-------------------------------------------------------------------------*/ -/** - @brief Compute the hash key for a string. - @param key Character string to use for key. - @return 1 unsigned int on at least 32 bits. - - This hash function has been taken from an Article in Dr Dobbs Journal. - This is normally a collision-free function, distributing keys evenly. - The key is stored anyway in the struct so that collision can be avoided - by comparing the key itself in last resort. - */ -/*--------------------------------------------------------------------------*/ -unsigned dictionary_hash(char * key); - -/*-------------------------------------------------------------------------*/ -/** - @brief Create a new dictionary object. - @param size Optional initial size of the dictionary. - @return 1 newly allocated dictionary objet. - - This function allocates a new dictionary object of given size and returns - it. If you do not know in advance (roughly) the number of entries in the - dictionary, give size=0. - */ -/*--------------------------------------------------------------------------*/ -dictionary * dictionary_new(int size); - -/*-------------------------------------------------------------------------*/ -/** - @brief Delete a dictionary object - @param d dictionary object to deallocate. - @return void - - Deallocate a dictionary object and all memory associated to it. - */ -/*--------------------------------------------------------------------------*/ -void dictionary_del(dictionary * vd); - -/*-------------------------------------------------------------------------*/ -/** - @brief Get a value from a dictionary. - @param d dictionary object to search. - @param key Key to look for in the dictionary. - @param def Default value to return if key not found. - @return 1 pointer to internally allocated character string. - - This function locates a key in a dictionary and returns a pointer to its - value, or the passed 'def' pointer if no such key can be found in - dictionary. The returned character pointer points to data internal to the - dictionary object, you should not try to free it or modify it. - */ -/*--------------------------------------------------------------------------*/ -char * dictionary_get(dictionary * d, char * key, char * def); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Set a value in a dictionary. - @param d dictionary object to modify. - @param key Key to modify or add. - @param val Value to add. - @return int 0 if Ok, anything else otherwise - - If the given key is found in the dictionary, the associated value is - replaced by the provided one. If the key cannot be found in the - dictionary, it is added to it. - - It is Ok to provide a NULL value for val, but NULL values for the dictionary - or the key are considered as errors: the function will return immediately - in such a case. - - Notice that if you dictionary_set a variable to NULL, a call to - dictionary_get will return a NULL value: the variable will be found, and - its value (NULL) is returned. In other words, setting the variable - content to NULL is equivalent to deleting the variable from the - dictionary. It is not possible (in this implementation) to have a key in - the dictionary without value. - - This function returns non-zero in case of failure. - */ -/*--------------------------------------------------------------------------*/ -int dictionary_set(dictionary * vd, char * key, char * val); - -/*-------------------------------------------------------------------------*/ -/** - @brief Delete a key in a dictionary - @param d dictionary object to modify. - @param key Key to remove. - @return void - - This function deletes a key in a dictionary. Nothing is done if the - key cannot be found. - */ -/*--------------------------------------------------------------------------*/ -void dictionary_unset(dictionary * d, char * key); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Dump a dictionary to an opened file pointer. - @param d Dictionary to dump - @param f Opened file pointer. - @return void - - Dumps a dictionary onto an opened file pointer. Key pairs are printed out - as @c [Key]=[Value], one per line. It is Ok to provide stdout or stderr as - output file pointers. - */ -/*--------------------------------------------------------------------------*/ -void dictionary_dump(dictionary * d, FILE * out); - -#endif diff --git a/ubi-utils/include/libiniparser.h b/ubi-utils/include/libiniparser.h deleted file mode 100644 index be3c667..0000000 --- a/ubi-utils/include/libiniparser.h +++ /dev/null @@ -1,280 +0,0 @@ - -/*-------------------------------------------------------------------------*/ -/** - @file iniparser.h - @author N. Devillard - @date Sep 2007 - @version 3.0 - @brief Parser for ini files. -*/ -/*--------------------------------------------------------------------------*/ - -/* - $Id: iniparser.h,v 1.24 2007-11-23 21:38:19 ndevilla Exp $ - $Revision: 1.24 $ -*/ - -#ifndef _INIPARSER_H_ -#define _INIPARSER_H_ - -/*--------------------------------------------------------------------------- - Includes - ---------------------------------------------------------------------------*/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -/* - * The following #include is necessary on many Unixes but not Linux. - * It is not needed for Windows platforms. - * Uncomment it if needed. - */ -/* #include <unistd.h> */ - -#include "dictionary.h" - -/*--------------------------------------------------------------------------- - Macros - ---------------------------------------------------------------------------*/ -/** For backwards compatibility only */ -#define iniparser_getstr(d, k) iniparser_getstring(d, k, NULL) -#define iniparser_setstr iniparser_setstring - -/*-------------------------------------------------------------------------*/ -/** - @brief Get number of sections in a dictionary - @param d Dictionary to examine - @return int Number of sections found in dictionary - - This function returns the number of sections found in a dictionary. - The test to recognize sections is done on the string stored in the - dictionary: a section name is given as "section" whereas a key is - stored as "section:key", thus the test looks for entries that do not - contain a colon. - - This clearly fails in the case a section name contains a colon, but - this should simply be avoided. - - This function returns -1 in case of error. - */ -/*--------------------------------------------------------------------------*/ - -int iniparser_getnsec(dictionary * d); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Get name for section n in a dictionary. - @param d Dictionary to examine - @param n Section number (from 0 to nsec-1). - @return Pointer to char string - - This function locates the n-th section in a dictionary and returns - its name as a pointer to a string statically allocated inside the - dictionary. Do not free or modify the returned string! - - This function returns NULL in case of error. - */ -/*--------------------------------------------------------------------------*/ - -char * iniparser_getsecname(dictionary * d, int n); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Save a dictionary to a loadable ini file - @param d Dictionary to dump - @param f Opened file pointer to dump to - @return void - - This function dumps a given dictionary into a loadable ini file. - It is Ok to specify @c stderr or @c stdout as output files. - */ -/*--------------------------------------------------------------------------*/ - -void iniparser_dump_ini(dictionary * d, FILE * f); - -/*-------------------------------------------------------------------------*/ -/** - @brief Dump a dictionary to an opened file pointer. - @param d Dictionary to dump. - @param f Opened file pointer to dump to. - @return void - - This function prints out the contents of a dictionary, one element by - line, onto the provided file pointer. It is OK to specify @c stderr - or @c stdout as output files. This function is meant for debugging - purposes mostly. - */ -/*--------------------------------------------------------------------------*/ -void iniparser_dump(dictionary * d, FILE * f); - -/*-------------------------------------------------------------------------*/ -/** - @brief Get the string associated to a key - @param d Dictionary to search - @param key Key string to look for - @param def Default value to return if key not found. - @return pointer to statically allocated character string - - This function queries a dictionary for a key. A key as read from an - ini file is given as "section:key". If the key cannot be found, - the pointer passed as 'def' is returned. - The returned char pointer is pointing to a string allocated in - the dictionary, do not free or modify it. - */ -/*--------------------------------------------------------------------------*/ -char * iniparser_getstring(dictionary * d, const char * key, char * def); - -/*-------------------------------------------------------------------------*/ -/** - @brief Get the string associated to a key, convert to an int - @param d Dictionary to search - @param key Key string to look for - @param notfound Value to return in case of error - @return integer - - This function queries a dictionary for a key. A key as read from an - ini file is given as "section:key". If the key cannot be found, - the notfound value is returned. - - Supported values for integers include the usual C notation - so decimal, octal (starting with 0) and hexadecimal (starting with 0x) - are supported. Examples: - - - "42" -> 42 - - "042" -> 34 (octal -> decimal) - - "0x42" -> 66 (hexa -> decimal) - - Warning: the conversion may overflow in various ways. Conversion is - totally outsourced to strtol(), see the associated man page for overflow - handling. - - Credits: Thanks to A. Becker for suggesting strtol() - */ -/*--------------------------------------------------------------------------*/ -int iniparser_getint(dictionary * d, const char * key, int notfound); - -/*-------------------------------------------------------------------------*/ -/** - @brief Get the string associated to a key, convert to a double - @param d Dictionary to search - @param key Key string to look for - @param notfound Value to return in case of error - @return double - - This function queries a dictionary for a key. A key as read from an - ini file is given as "section:key". If the key cannot be found, - the notfound value is returned. - */ -/*--------------------------------------------------------------------------*/ -double iniparser_getdouble(dictionary * d, char * key, double notfound); - -/*-------------------------------------------------------------------------*/ -/** - @brief Get the string associated to a key, convert to a boolean - @param d Dictionary to search - @param key Key string to look for - @param notfound Value to return in case of error - @return integer - - This function queries a dictionary for a key. A key as read from an - ini file is given as "section:key". If the key cannot be found, - the notfound value is returned. - - A true boolean is found if one of the following is matched: - - - A string starting with 'y' - - A string starting with 'Y' - - A string starting with 't' - - A string starting with 'T' - - A string starting with '1' - - A false boolean is found if one of the following is matched: - - - A string starting with 'n' - - A string starting with 'N' - - A string starting with 'f' - - A string starting with 'F' - - A string starting with '0' - - The notfound value returned if no boolean is identified, does not - necessarily have to be 0 or 1. - */ -/*--------------------------------------------------------------------------*/ -int iniparser_getboolean(dictionary * d, const char * key, int notfound); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Set an entry in a dictionary. - @param ini Dictionary to modify. - @param entry Entry to modify (entry name) - @param val New value to associate to the entry. - @return int 0 if Ok, -1 otherwise. - - If the given entry can be found in the dictionary, it is modified to - contain the provided value. If it cannot be found, -1 is returned. - It is Ok to set val to NULL. - */ -/*--------------------------------------------------------------------------*/ -int iniparser_setstring(dictionary * ini, char * entry, char * val); - - -/*-------------------------------------------------------------------------*/ -/** - @brief Delete an entry in a dictionary - @param ini Dictionary to modify - @param entry Entry to delete (entry name) - @return void - - If the given entry can be found, it is deleted from the dictionary. - */ -/*--------------------------------------------------------------------------*/ -void iniparser_unset(dictionary * ini, char * entry); - -/*-------------------------------------------------------------------------*/ -/** - @brief Finds out if a given entry exists in a dictionary - @param ini Dictionary to search - @param entry Name of the entry to look for - @return integer 1 if entry exists, 0 otherwise - - Finds out if a given entry exists in the dictionary. Since sections - are stored as keys with NULL associated values, this is the only way - of querying for the presence of sections in a dictionary. - */ -/*--------------------------------------------------------------------------*/ -int iniparser_find_entry(dictionary * ini, char * entry) ; - -/*-------------------------------------------------------------------------*/ -/** - @brief Parse an ini file and return an allocated dictionary object - @param ininame Name of the ini file to read. - @return Pointer to newly allocated dictionary - - This is the parser for ini files. This function is called, providing - the name of the file to be read. It returns a dictionary object that - should not be accessed directly, but through accessor functions - instead. - - The returned dictionary must be freed using iniparser_freedict(). - */ -/*--------------------------------------------------------------------------*/ -dictionary * iniparser_load(const char * ininame); - -/*-------------------------------------------------------------------------*/ -/** - @brief Free all memory associated to an ini dictionary - @param d Dictionary to free - @return void - - Free all memory associated to an ini dictionary. - It is mandatory to call this function before the dictionary object - gets out of the current context. - */ -/*--------------------------------------------------------------------------*/ -void iniparser_freedict(dictionary * d); - -#endif diff --git a/ubi-utils/include/libscan.h b/ubi-utils/include/libscan.h deleted file mode 100644 index a2b8657..0000000 --- a/ubi-utils/include/libscan.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2008 Nokia Corporation - * - * 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. - * - * Author: Artem Bityutskiy - * - * UBI scanning library. - */ - -#ifndef __LIBSCAN_H__ -#define __LIBSCAN_H__ - -#include <stdint.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * If an eraseblock does not contain an erase counter, this value is used - * instead of the erase counter. - */ -#define NO_EC 0xFFFFFFFF - -/* - * If an eraseblock contains a corrupted erase counter, this value is used - * instead of the erase counter. - */ -#define CORRUPT_EC 0xFFFFFFFE - -/* - * If an eraseblock does not contain an erase counter, one of these values is - * used. - * - * @EB_EMPTY: the eraseblock appeared to be empty - * @EB_CORRUPTED: the eraseblock contains corrupted erase counter header - * @EB_ALIEN: the eraseblock contains some non-UBI data - * @EC_MAX: maximum allowed erase counter value - */ -enum -{ - EB_EMPTY = 0xFFFFFFFF, - EB_CORRUPTED = 0xFFFFFFFE, - EB_ALIEN = 0xFFFFFFFD, - EB_BAD = 0xFFFFFFFC, - EC_MAX = UBI_MAX_ERASECOUNTER, -}; - -/** - * struct ubi_scan_info - UBI scanning information. - * @ec: erase counters or eraseblock status for all eraseblocks - * @mean_ec: mean erase counter - * @ok_cnt: count of eraseblock with correct erase counter header - * @empty_cnt: count of supposedly eraseblocks - * @corrupted_cnt: count of eraseblocks with corrupted erase counter header - * @alien_cnt: count of eraseblock containing non-ubi data - * @bad_cnt: count of bad eraseblocks - * @bad_cnt: count of non-bad eraseblocks - * @vid_hdr_offs: volume ID header offset from the found EC headers (%-1 means - * undefined) - * @data_offs: data offset from the found EC headers (%-1 means undefined) - */ -struct ubi_scan_info -{ - uint32_t *ec; - long long mean_ec; - int ok_cnt; - int empty_cnt; - int corrupted_cnt; - int alien_cnt; - int bad_cnt; - int good_cnt; - int vid_hdr_offs; - int data_offs; -}; - -struct mtd_dev_info; - -/** - * ubi_scan - scan an MTD device. - * @mtd: information about the MTD device to scan - * @fd: MTD device node file descriptor - * @info: the result of the scanning is returned here - * @verbose: verbose mode: %0 - be silent, %1 - output progress information, - * 2 - debugging output mode - */ -int ubi_scan(struct mtd_dev_info *mtd, int fd, struct ubi_scan_info **info, - int verbose); - -/** - * ubi_scan_free - free scanning information. - * @si: scanning information to free - */ -void ubi_scan_free(struct ubi_scan_info *si); - -#ifdef __cplusplus -} -#endif - -#endif /* __LIBSCAN_H__ */ diff --git a/ubi-utils/include/libubi.h b/ubi-utils/include/libubi.h deleted file mode 100644 index 4d6a7ee..0000000 --- a/ubi-utils/include/libubi.h +++ /dev/null @@ -1,485 +0,0 @@ -/* - * 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. - * - * Author: Artem Bityutskiy - * - * UBI (Unsorted Block Images) library. - */ - -#ifndef __LIBUBI_H__ -#define __LIBUBI_H__ - -#include <ctype.h> -#include <stdint.h> -#include <mtd/ubi-user.h> -#include <mtd/ubi-media.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* UBI version libubi is made for */ -#define LIBUBI_UBI_VERSION 1 - -/* Maximum physical eraseblock size in bytes */ -#define UBI_MAX_PEB_SZ (2*1024*1024) - -/* UBI library descriptor */ -typedef void * libubi_t; - -/** - * struct ubi_attach_request - MTD device attachment request. - * @dev_num: number to assign to the newly created UBI device - * (%UBI_DEV_NUM_AUTO should be used to automatically assign the - * number) - * @mtd_num: MTD device number to attach (used if @mtd_dev_node is %NULL) - * @mtd_dev_node: path to MTD device node to attach - * @vid_hdr_offset: VID header offset (%0 means default offset and this is what - * most of the users want) - * @max_beb_per1024: Maximum expected bad eraseblocks per 1024 eraseblocks - */ -struct ubi_attach_request -{ - int dev_num; - int mtd_num; - const char *mtd_dev_node; - int vid_hdr_offset; - int max_beb_per1024; -}; - -/** - * 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; - int alignment; - long long bytes; - int vol_type; - const char *name; -}; - -/** - * 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 - * @ctrl_major: major number of the UBI control device - * @ctrl_minor: minor number of the UBI control device - */ -struct ubi_info -{ - int dev_count; - int lowest_dev_num; - int highest_dev_num; - int version; - int ctrl_major; - int ctrl_minor; -}; - -/** - * struct ubi_dev_info - UBI device information. - * @dev_num: UBI device number - * @mtd_num: MTD device number on top of which this UBI device is working - * @vol_count: count of volumes on this UBI device - * @lowest_vol_id: lowest volume ID - * @highest_vol_id: highest volume ID - * @major: major number of corresponding character device - * @minor: minor number of corresponding character device - * @total_lebs: total number of logical eraseblocks on this UBI device - * @avail_lebs: how many logical eraseblocks are not used and available for new - * volumes - * @total_bytes: @total_lebs * @leb_size - * @avail_bytes: @avail_lebs * @leb_size - * @bad_count: count of bad physical eraseblocks - * @leb_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 -{ - int dev_num; - int mtd_num; - int vol_count; - int lowest_vol_id; - int highest_vol_id; - int major; - int minor; - int total_lebs; - int avail_lebs; - long long total_bytes; - long long avail_bytes; - int bad_count; - int leb_size; - long long max_ec; - int bad_rsvd; - int max_vol_count; - int min_io_size; -}; - -/** - * struct ubi_vol_info - UBI volume information. - * @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 - * @type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) - * @alignment: alignment 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_lebs: how many logical eraseblocks are reserved for this volume - * @leb_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 type; - int alignment; - long long data_bytes; - long long rsvd_bytes; - int rsvd_lebs; - int leb_size; - int corrupted; - char name[UBI_VOL_NAME_MAX + 1]; -}; - -/** - * 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. In case of - * failure, errno contains the error code or zero if UBI is not present in the - * system. - */ -libubi_t libubi_open(void); - -/** - * libubi_close - close UBI library. - * @desc: UBI library descriptor - */ -void libubi_close(libubi_t desc); - -/** - * ubi_get_info - get general UBI information. - * @desc: UBI library descriptor - * @info: pointer to the &struct ubi_info object to fill - * - * This function fills the passed @info object with general UBI information and - * returns %0 in case of success and %-1 in case of failure. - */ -int ubi_get_info(libubi_t desc, struct ubi_info *info); - -/** - * mtd_num2ubi_dev - find UBI device by attached MTD device. - * @@desc: UBI library descriptor - * @mtd_num: MTD device number - * @dev_num: UBI device number is returned here - * - * This function finds UBI device to which MTD device @mtd_num is attached. - * Returns %0 if the UBI device was found and %-1 if not. - */ -int mtd_num2ubi_dev(libubi_t desc, int mtd_num, int *dev_num); - -/** - * ubi_attach - attach an MTD device by its node path or bt MTD device number - * @desc: UBI library descriptor - * @node: name of the UBI control character device node - * @req: MTD attach request - * - * This function creates new UBI device by attaching an MTD device described by - * @req. If @req->mtd_dev_node is given it should contain path to the MTD - * device node. Otherwise @req->mtd_num will be used. - * - * Returns %0 in case of success, %-1 in case of failure (errno is set) and %1 - * if parameter @req->max_beb_per1024 was ignored by kernel (because the kernel - * is old and does not support this feature, which was added in 3.7). The newly - * created UBI device number is returned in @req->dev_num. In the MTD device - * was specified by its device node path, the MTD device number is returned in - * @req->mtd_num. - */ -int ubi_attach(libubi_t desc, const char *node, struct ubi_attach_request *req); - -/** - * ubi_detach_mtd - detach an MTD device. - * @desc: UBI library descriptor - * @node: name of the UBI control character device node - * @mtd_num: MTD device number to detach - * - * This function detaches MTD device number @mtd_num from UBI, which means the - * corresponding UBI device is removed. Returns zero in case of success and %-1 - * in case of failure. - */ -int ubi_detach_mtd(libubi_t desc, const char *node, int mtd_num); - -/** - * ubi_detach - detach an MTD device by its node path. - * @desc: UBI library descriptor - * @node: name of the UBI control character device node - * @mtd_dev_node: path to an MTD device node - * - * This function detaches an MTD device @mtd_dev_node from UBI. Returns zero in - * case of success and %-1 in case of failure. - */ -int ubi_detach(libubi_t desc, const char *node, const char *mtd_dev_node); - -/** - * ubi_remove_dev - remove an UBI device. - * @desc: UBI library descriptor - * @node: name of the UBI control character device node - * @ubi_dev: UBI device number to remove - * - * This function removes UBI device number @ubi_dev and returns zero in case of - * success and %-1 in case of failure. - */ -int ubi_remove_dev(libubi_t desc, const char *node, int ubi_dev); - -/** - * 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 - * - * 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 - * returned in @req->vol_id. - */ -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 - * - * This function removes volume @vol_id from UBI device @node and returns %0 in - * case of success and %-1 in case of failure. - */ -int ubi_rmvol(libubi_t desc, const char *node, int vol_id); - - -/** - * ubi_rnvols - rename UBI volumes. - * @desc: UBI library descriptor - * @node: name of the UBI character device to remove a volume from - * @rnvol: description of volumes to rename - * - * This function removes volume @vol_id from UBI device @node and returns %0 in - * case of success and %-1 in case of failure. - */ -int ubi_rnvols(libubi_t desc, const char *node, struct ubi_rnvol_req *rnvol); - -/** - * 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 - * - * 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_probe_node - test UBI node. - * @desc: UBI library descriptor - * @node: the node to test - * - * 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 device or volume node (errno is ENODEV in this case) or - * if an error occurred. - */ -int ubi_probe_node(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. If the UBI device - * corresponding to @node does not exist, errno is set to @ENODEV. - */ -int ubi_get_dev_info(libubi_t desc, const char *node, - struct ubi_dev_info *info); - -/** - * ubi_dev_present - check whether an UBI device is present. - * @desc: UBI library descriptor - * @dev_num: UBI device number to check - * - * This function returns %1 if UBI device is present and %0 if not. - */ -int ubi_dev_present(libubi_t desc, int dev_num); - -/** - * 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 - * - * This function is identical to 'ubi_get_dev_info()' except that it accepts UBI - * device number, not UBI character device. If the UBI device @dev_num does not - * exist, errno is set to @ENODEV. - */ -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 - * - * This function fills the passed @info object with UBI volume information and - * returns %0 in case of success and %-1 in case of failure. If the UBI volume - * corresponding to @node does not exist, errno is set to @ENODEV. - */ -int ubi_get_vol_info(libubi_t desc, const char *node, - struct ubi_vol_info *info); - -/** - * 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 - * - * This function is identical to 'ubi_get_vol_info()' except that it accepts UBI - * volume ID, not UBI volume character device. If the UBI device @dev_num does - * not exist, or if the UBI volume @vol_id does not exist, errno is set to - * @ENODEV. - */ -int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id, - struct ubi_vol_info *info); - -/** - * ubi_get_vol_info1_nm - get UBI volume information by volume name. - * @desc: UBI library descriptor - * @dev_num: UBI device number - * @name: name 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 name, not UBI volume ID. If the UBI device @dev_num does not exist, - * or if the UBI volume @name does not exist, errno is set to @ENODEV. - */ -int ubi_get_vol_info1_nm(libubi_t desc, int dev_num, const char *name, - struct ubi_vol_info *info); - -/** - * ubi_vol_block_create - create a block device on top of an UBI volume. - * @fd: volume character device file descriptor - * - * Returns %0 in case of success and %-1 in case of failure. - */ -int ubi_vol_block_create(int fd); - -/** - * ubi_vol_block_remove - remove a block device from an UBI volume. - * @fd: volume character device file descriptor - * - * Returns %0 in case of success and %-1 in case of failure. - */ -int ubi_vol_block_remove(int fd); - -/** - * ubi_update_start - start UBI volume update. - * @desc: UBI library descriptor - * @fd: volume character device 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. The caller is assumed to write @bytes data to the - * volume @fd afterward. - */ -int ubi_update_start(libubi_t desc, int fd, long long bytes); - -/** - * ubi_leb_change_start - start atomic LEB change. - * @desc: UBI library descriptor - * @fd: volume character device file descriptor - * @lnum: LEB number to change - * @bytes: how many bytes of new data will be written to the LEB - * - * This function initiates atomic LEB change operation and returns %0 in case - * of success and %-1 in case of error. he caller is assumed to write @bytes - * data to the volume @fd afterward. - */ -int ubi_leb_change_start(libubi_t desc, int fd, int lnum, int bytes); - -/** - * ubi_set_property - set volume propety. - * @fd: volume character device file descriptor - * @property: the property to change (%UBI_VOL_PROP_DIRECT_WRITE, etc) - * @value: new value of the changed property - * - * This function changes a property of a volume. Returns zero in case of - * success and a negative error code in case of error. - */ -int ubi_set_property(int fd, uint8_t property, uint64_t value); - -/** - * ubi_leb_unmap - unmap a logical eraseblock. - * @fd: volume character device file descriptor - * @lnum: logical eraseblock to unmap - * - * This function unmaps LEB @lnum and returns zero in case of success and a - * negative error code in case of error. - */ -int ubi_leb_unmap(int fd, int lnum); - -/** - * ubi_is_mapped - check if logical eraseblock is mapped. - * @fd: volume character device file descriptor - * @lnum: logical eraseblock number - * - * This function checks if logical eraseblock @lnum is mapped to a physical - * eraseblock. If a logical eraseblock is un-mapped, this does not necessarily - * mean it will still be un-mapped after the UBI device is re-attached. The - * logical eraseblock may become mapped to the physical eraseblock it was last - * mapped to. - * - * This function returns %1 if the LEB is mapped, %0 if not, and %-1 in case of - * failure. If the volume is damaged because of an interrupted update errno - * set with %EBADF error code. - */ -int ubi_is_mapped(int fd, int lnum); - -#ifdef __cplusplus -} -#endif - -#endif /* !__LIBUBI_H__ */ diff --git a/ubi-utils/include/libubigen.h b/ubi-utils/include/libubigen.h deleted file mode 100644 index c25ac20..0000000 --- a/ubi-utils/include/libubigen.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) International Business Machines Corp., 2006 - * Copyright (C) 2008 Nokia Corporation - * - * 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. - */ - -/* - * Authors: Frank Haverkamp - * Artem Bityutskiy - */ - -#ifndef __LIBUBIGEN_H__ -#define __LIBUBIGEN_H__ - -#include <stdint.h> -#include <mtd/ubi-media.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * struct ubigen_info - libubigen information. - * @leb_size: logical eraseblock size - * @peb_size: size of the physical eraseblock - * @min_io_size: minimum input/output unit size - * @vid_hdr_offs: offset of the VID header - * @data_offs: data offset - * @ubi_ver: UBI version - * @vtbl_size: volume table size - * @max_volumes: maximum amount of volumes - * @image_seq: UBI image sequence number - */ -struct ubigen_info -{ - int leb_size; - int peb_size; - int min_io_size; - int vid_hdr_offs; - int data_offs; - int ubi_ver; - int vtbl_size; - int max_volumes; - uint32_t image_seq; -}; - -/** - * struct ubigen_vol_info - information about a volume. - * @id: volume id - * @type: volume type (%UBI_VID_DYNAMIC or %UBI_VID_STATIC) - * @alignment: volume alignment - * @data_pad: how many bytes are unused at the end of the each physical - * eraseblock to satisfy the requested alignment - * @usable_leb_size: LEB size accessible for volume users - * @name: volume name - * @name_len: volume name length - * @compat: compatibility of this volume (%0, %UBI_COMPAT_DELETE, - * %UBI_COMPAT_IGNORE, %UBI_COMPAT_PRESERVE, or %UBI_COMPAT_REJECT) - * @used_ebs: total number of used logical eraseblocks in this volume (relevant - * for static volumes only) - * @bytes: size of the volume contents in bytes (relevant for static volumes - * only) - * @flags: volume flags (%UBI_VTBL_AUTORESIZE_FLG) - */ -struct ubigen_vol_info -{ - int id; - int type; - int alignment; - int data_pad; - int usable_leb_size; - const char *name; - int name_len; - int compat; - int used_ebs; - long long bytes; - uint8_t flags; -}; - -/** - * ubigen_info_init - initialize libubigen. - * @ui: libubigen information - * @peb_size: flash physical eraseblock size - * @min_io_size: flash minimum input/output unit size - * @subpage_size: flash sub-page, if present (has to be equivalent to - * @min_io_size if does not exist) - * @vid_hdr_offs: offset of the VID header - * @ubi_ver: UBI version - * @image_seq: UBI image sequence number - */ -void ubigen_info_init(struct ubigen_info *ui, int peb_size, int min_io_size, - int subpage_size, int vid_hdr_offs, int ubi_ver, - uint32_t image_seq); - -/** - * ubigen_create_empty_vtbl - creates empty volume table. - * @ui: libubigen information - * - * This function creates an empty volume table and returns a pointer to it in - * case of success and %NULL in case of failure. The returned object has to be - * freed with 'free()' call. - */ -struct ubi_vtbl_record *ubigen_create_empty_vtbl(const struct ubigen_info *ui); - -/** - * ubigen_init_ec_hdr - initialize EC header. - * @ui: libubigen information - * @hdr: the EC header to initialize - * @ec: erase counter value - */ -void ubigen_init_ec_hdr(const struct ubigen_info *ui, - struct ubi_ec_hdr *hdr, long long ec); - -/** - * ubigen_init_vid_hdr - initialize VID header. - * @ui: libubigen information - * @vi: volume information - * @hdr: the VID header to initialize - * @lnum: logical eraseblock number - * @data: the contents of the LEB (static volumes only) - * @data_size: amount of data in this LEB (static volumes only) - * - * Note, @used_ebs, @data and @data_size are ignored in case of dynamic - * volumes. - */ -void ubigen_init_vid_hdr(const struct ubigen_info *ui, - const struct ubigen_vol_info *vi, - struct ubi_vid_hdr *hdr, int lnum, - const void *data, int data_size); - -/** - * ubigen_add_volume - add a volume to the volume table. - * @ui: libubigen information - * @vi: volume information - * @vtbl: volume table to add to - * - * This function adds volume described by input parameters to the volume table - * @vtbl. - */ -int ubigen_add_volume(const struct ubigen_info *ui, - const struct ubigen_vol_info *vi, - struct ubi_vtbl_record *vtbl); - -/** - * ubigen_write_volume - write UBI volume. - * @ui: libubigen information - * @vi: volume information - * @ec: erase counter value to put to EC headers - * @bytes: volume size in bytes - * @in: input file descriptor (has to be properly seeked) - * @out: output file descriptor - * - * This function reads the contents of the volume from the input file @in and - * writes the UBI volume to the output file @out. Returns zero on success and - * %-1 on failure. - */ -int ubigen_write_volume(const struct ubigen_info *ui, - const struct ubigen_vol_info *vi, long long ec, - long long bytes, int in, int out); - -/** - * ubigen_write_layout_vol - write UBI layout volume - * @ui: libubigen information - * @peb1: physical eraseblock number to write the first volume table copy - * @peb2: physical eraseblock number to write the second volume table copy - * @ec1: erase counter value for @peb1 - * @ec2: erase counter value for @peb1 - * @vtbl: volume table - * @fd: output file descriptor seeked to the proper position - * - * This function creates the UBI layout volume which contains 2 copies of the - * volume table. Returns zero in case of success and %-1 in case of failure. - */ -int ubigen_write_layout_vol(const struct ubigen_info *ui, int peb1, int peb2, - long long ec1, long long ec2, - struct ubi_vtbl_record *vtbl, int fd); - -#ifdef __cplusplus -} -#endif - -#endif /* !__LIBUBIGEN_H__ */ |