diff options
Diffstat (limited to 'ubi-utils/inc/libubi.h')
-rw-r--r-- | ubi-utils/inc/libubi.h | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/ubi-utils/inc/libubi.h b/ubi-utils/inc/libubi.h deleted file mode 100644 index f13d812..0000000 --- a/ubi-utils/inc/libubi.h +++ /dev/null @@ -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__ */ |