image.h
来自「uboot详细解读可用启动引导LINUX2.6内核」· C头文件 代码 · 共 613 行 · 第 1/2 页
H
613 行
image_get_hdr_b (os);image_get_hdr_b (arch);image_get_hdr_b (type);image_get_hdr_b (comp);static inline char *image_get_name (image_header_t *hdr){ return (char *)hdr->ih_name;}static inline uint32_t image_get_data_size (image_header_t *hdr){ return image_get_size (hdr);}/** * image_get_data - get image payload start address * @hdr: image header * * image_get_data() returns address of the image payload. For single * component images it is image data start. For multi component * images it points to the null terminated table of sub-images sizes. * * returns: * image payload data start address */static inline ulong image_get_data (image_header_t *hdr){ return ((ulong)hdr + image_get_header_size ());}static inline uint32_t image_get_image_size (image_header_t *hdr){ return (image_get_size (hdr) + image_get_header_size ());}static inline ulong image_get_image_end (image_header_t *hdr){ return ((ulong)hdr + image_get_image_size (hdr));}#define image_set_hdr_l(f) \ static inline void image_set_##f(image_header_t *hdr, uint32_t val) \ { \ hdr->ih_##f = cpu_to_uimage (val); \ }image_set_hdr_l (magic);image_set_hdr_l (hcrc);image_set_hdr_l (time);image_set_hdr_l (size);image_set_hdr_l (load);image_set_hdr_l (ep);image_set_hdr_l (dcrc);#define image_set_hdr_b(f) \ static inline void image_set_##f(image_header_t *hdr, uint8_t val) \ { \ hdr->ih_##f = val; \ }image_set_hdr_b (os);image_set_hdr_b (arch);image_set_hdr_b (type);image_set_hdr_b (comp);static inline void image_set_name (image_header_t *hdr, const char *name){ strncpy (image_get_name (hdr), name, IH_NMLEN);}int image_check_hcrc (image_header_t *hdr);int image_check_dcrc (image_header_t *hdr);#ifndef USE_HOSTCCint getenv_yesno (char *var);ulong getenv_bootm_low(void);phys_size_t getenv_bootm_size(void);void memmove_wd (void *to, void *from, size_t len, ulong chunksz);#endifstatic inline int image_check_magic (image_header_t *hdr){ return (image_get_magic (hdr) == IH_MAGIC);}static inline int image_check_type (image_header_t *hdr, uint8_t type){ return (image_get_type (hdr) == type);}static inline int image_check_arch (image_header_t *hdr, uint8_t arch){ return (image_get_arch (hdr) == arch);}static inline int image_check_os (image_header_t *hdr, uint8_t os){ return (image_get_os (hdr) == os);}ulong image_multi_count (image_header_t *hdr);void image_multi_getimg (image_header_t *hdr, ulong idx, ulong *data, ulong *len);void image_print_contents (image_header_t *hdr);#ifndef USE_HOSTCCstatic inline int image_check_target_arch (image_header_t *hdr){#if defined(__ARM__) if (!image_check_arch (hdr, IH_ARCH_ARM))#elif defined(__avr32__) if (!image_check_arch (hdr, IH_ARCH_AVR32))#elif defined(__bfin__) if (!image_check_arch (hdr, IH_ARCH_BLACKFIN))#elif defined(__I386__) if (!image_check_arch (hdr, IH_ARCH_I386))#elif defined(__M68K__) if (!image_check_arch (hdr, IH_ARCH_M68K))#elif defined(__microblaze__) if (!image_check_arch (hdr, IH_ARCH_MICROBLAZE))#elif defined(__mips__) if (!image_check_arch (hdr, IH_ARCH_MIPS))#elif defined(__nios__) if (!image_check_arch (hdr, IH_ARCH_NIOS))#elif defined(__nios2__) if (!image_check_arch (hdr, IH_ARCH_NIOS2))#elif defined(__PPC__) if (!image_check_arch (hdr, IH_ARCH_PPC))#elif defined(__sh__) if (!image_check_arch (hdr, IH_ARCH_SH))#elif defined(__sparc__) if (!image_check_arch (hdr, IH_ARCH_SPARC))#else# error Unknown CPU type#endif return 0; return 1;}#endif /* USE_HOSTCC *//*******************************************************************//* New uImage format specific code (prefixed with fit_) *//*******************************************************************/#if defined(CONFIG_FIT)#define FIT_IMAGES_PATH "/images"#define FIT_CONFS_PATH "/configurations"/* hash node */#define FIT_HASH_NODENAME "hash"#define FIT_ALGO_PROP "algo"#define FIT_VALUE_PROP "value"/* image node */#define FIT_DATA_PROP "data"#define FIT_TIMESTAMP_PROP "timestamp"#define FIT_DESC_PROP "description"#define FIT_ARCH_PROP "arch"#define FIT_TYPE_PROP "type"#define FIT_OS_PROP "os"#define FIT_COMP_PROP "compression"#define FIT_ENTRY_PROP "entry"#define FIT_LOAD_PROP "load"/* configuration node */#define FIT_KERNEL_PROP "kernel"#define FIT_RAMDISK_PROP "ramdisk"#define FIT_FDT_PROP "fdt"#define FIT_DEFAULT_PROP "default"#define FIT_MAX_HASH_LEN 20 /* max(crc32_len(4), sha1_len(20)) *//* cmdline argument format parsing */inline int fit_parse_conf (const char *spec, ulong addr_curr, ulong *addr, const char **conf_name);inline int fit_parse_subimage (const char *spec, ulong addr_curr, ulong *addr, const char **image_name);void fit_print_contents (const void *fit);void fit_image_print (const void *fit, int noffset, const char *p);void fit_image_print_hash (const void *fit, int noffset, const char *p);/** * fit_get_end - get FIT image size * @fit: pointer to the FIT format image header * * returns: * size of the FIT image (blob) in memory */static inline ulong fit_get_size (const void *fit){ return fdt_totalsize (fit);}/** * fit_get_end - get FIT image end * @fit: pointer to the FIT format image header * * returns: * end address of the FIT image (blob) in memory */static inline ulong fit_get_end (const void *fit){ return (ulong)fit + fdt_totalsize (fit);}/** * fit_get_name - get FIT node name * @fit: pointer to the FIT format image header * * returns: * NULL, on error * pointer to node name, on success */static inline const char *fit_get_name (const void *fit_hdr, int noffset, int *len){ return fdt_get_name (fit_hdr, noffset, len);}int fit_get_desc (const void *fit, int noffset, char **desc);int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp);int fit_image_get_node (const void *fit, const char *image_uname);int fit_image_get_os (const void *fit, int noffset, uint8_t *os);int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch);int fit_image_get_type (const void *fit, int noffset, uint8_t *type);int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp);int fit_image_get_load (const void *fit, int noffset, ulong *load);int fit_image_get_entry (const void *fit, int noffset, ulong *entry);int fit_image_get_data (const void *fit, int noffset, const void **data, size_t *size);int fit_image_hash_get_algo (const void *fit, int noffset, char **algo);int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, int *value_len);int fit_set_timestamp (void *fit, int noffset, time_t timestamp);int fit_set_hashes (void *fit);int fit_image_set_hashes (void *fit, int image_noffset);int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, int value_len);int fit_image_check_hashes (const void *fit, int noffset);int fit_image_check_os (const void *fit, int noffset, uint8_t os);int fit_image_check_arch (const void *fit, int noffset, uint8_t arch);int fit_image_check_type (const void *fit, int noffset, uint8_t type);int fit_image_check_comp (const void *fit, int noffset, uint8_t comp);int fit_check_format (const void *fit);int fit_conf_get_node (const void *fit, const char *conf_uname);int fit_conf_get_kernel_node (const void *fit, int noffset);int fit_conf_get_ramdisk_node (const void *fit, int noffset);int fit_conf_get_fdt_node (const void *fit, int noffset);void fit_conf_print (const void *fit, int noffset, const char *p);#ifndef USE_HOSTCCstatic inline int fit_image_check_target_arch (const void *fdt, int node){#if defined(__ARM__) if (!fit_image_check_arch (fdt, node, IH_ARCH_ARM))#elif defined(__avr32__) if (!fit_image_check_arch (fdt, node, IH_ARCH_AVR32))#elif defined(__bfin__) if (!fit_image_check_arch (fdt, node, IH_ARCH_BLACKFIN))#elif defined(__I386__) if (!fit_image_check_arch (fdt, node, IH_ARCH_I386))#elif defined(__M68K__) if (!fit_image_check_arch (fdt, node, IH_ARCH_M68K))#elif defined(__microblaze__) if (!fit_image_check_arch (fdt, node, IH_ARCH_MICROBLAZE))#elif defined(__mips__) if (!fit_image_check_arch (fdt, node, IH_ARCH_MIPS))#elif defined(__nios__) if (!fit_image_check_arch (fdt, node, IH_ARCH_NIOS))#elif defined(__nios2__) if (!fit_image_check_arch (fdt, node, IH_ARCH_NIOS2))#elif defined(__PPC__) if (!fit_image_check_arch (fdt, node, IH_ARCH_PPC))#elif defined(__sh__) if (!fit_image_check_arch (fdt, node, IH_ARCH_SH))#elif defined(__sparc__) if (!fit_image_check_arch (fdt, node, IH_ARCH_SPARC))#else# error Unknown CPU type#endif return 0; return 1;}#endif /* USE_HOSTCC */#ifdef CONFIG_FIT_VERBOSE#define fit_unsupported(msg) printf ("! %s:%d " \ "FIT images not supported for '%s'\n", \ __FILE__, __LINE__, (msg))#define fit_unsupported_reset(msg) printf ("! %s:%d " \ "FIT images not supported for '%s' " \ "- must reset board to recover!\n", \ __FILE__, __LINE__, (msg))#else#define fit_unsupported(msg)#define fit_unsupported_reset(msg)#endif /* CONFIG_FIT_VERBOSE */#endif /* CONFIG_FIT */#endif /* __IMAGE_H__ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?