barebox/include/uimagefs.h
Jean-Christophe PLAGNIOL-VILLARD 12158a28d4 fs: add uimagefs
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>
2013-09-27 10:39:56 +02:00

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__ */