this will provide the image data and information via file # ls -l /tmp/ -rwxrwxrwx 3 arch -rwxrwxrwx 12 compression -rwxrwxrwx 16 name -rwxrwxrwx 5 os -rwxrwxrwx 24 time -rwxrwxrwx 12 type -rwxrwxrwx 10 load_addr -rwxrwxrwx 10 entry_point -rwxrwxrwx 2199875 data0 -rwxrwxrwx 2199875 data -rwxrwxrwx 10 data.crc if it's multi image # ls -l /tmp-multi/ -rwxrwxrwx 3 arch -rwxrwxrwx 12 compression -rwxrwxrwx 16 name -rwxrwxrwx 5 os -rwxrwxrwx 24 time -rwxrwxrwx 16 type -rwxrwxrwx 10 load_addr -rwxrwxrwx 10 entry_point -rwxrwxrwx 1292 data0 -rwxrwxrwx 983 data1 -rwxrwxrwx 2287 data -rwxrwxrwx 10 data.crc you can get the image header via an ioctl on any file UIMAGEFS_METADATA if you want to check the crc do # crc32 -f /tmp-multi/data -V /tmp-multi/data.crc CRC32 for /tmp-multi/data 0x00000000 ... 0x000008ee ==> 0x88d5a0db Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
54 lines
870 B
C
54 lines
870 B
C
/*
|
|
* Copyright (c) 2013 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
|
*
|
|
* under GPLv2 only
|
|
*/
|
|
|
|
#ifndef __UIMAGEFS_H__
|
|
#define __UIMAGEFS_H__
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/list.h>
|
|
#include <image.h>
|
|
#include <ioctl.h>
|
|
|
|
#define UIMAGEFS_METADATA _IOR('U', 100, struct image_header)
|
|
|
|
enum uimagefs_type {
|
|
UIMAGEFS_DATA,
|
|
UIMAGEFS_DATA_CRC,
|
|
UIMAGEFS_NAME,
|
|
UIMAGEFS_TIME,
|
|
UIMAGEFS_LOAD,
|
|
UIMAGEFS_EP,
|
|
UIMAGEFS_OS,
|
|
UIMAGEFS_ARCH,
|
|
UIMAGEFS_TYPE,
|
|
UIMAGEFS_COMP,
|
|
};
|
|
|
|
struct uimagefs_handle_data {
|
|
char *name;
|
|
enum uimagefs_type type;
|
|
uint64_t size;
|
|
|
|
int fd;
|
|
size_t offset; /* offset in the image */
|
|
size_t pos; /* pos in the data */
|
|
|
|
char *data;
|
|
|
|
struct list_head list;
|
|
};
|
|
|
|
struct uimagefs_handle {
|
|
struct image_header header;
|
|
int nb_data_entries;
|
|
char *filename;
|
|
char *tmp;
|
|
|
|
struct list_head list;
|
|
};
|
|
|
|
#endif /* __UIMAGEFS_H__ */
|