blob: 02d15de81eb567965ef7aa173831cbf562bf268a [file] [log] [blame]
Brian Carlstrom4a289ed2011-08-16 17:17:49 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
3#ifndef ART_SRC_IMAGE_H_
4#define ART_SRC_IMAGE_H_
5
6#include <string.h>
7
8#include "globals.h"
Brian Carlstroma663ea52011-08-19 23:33:41 -07009#include "object.h"
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070010
11namespace art {
12
13// header of image files written by ImageWriter, read and validated by Space.
14class ImageHeader {
15 public:
16 ImageHeader() {}
17
Brian Carlstromc74255f2011-09-11 22:47:39 -070018 ImageHeader(uint32_t base_addr) : base_addr_(base_addr) {
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070019 memcpy(magic_, kImageMagic, sizeof(kImageMagic));
20 memcpy(version_, kImageVersion, sizeof(kImageVersion));
21 }
22
23 bool IsValid() {
24 if (memcmp(magic_, kImageMagic, sizeof(kImageMagic) != 0)) {
25 return false;
26 }
27 if (memcmp(version_, kImageVersion, sizeof(kImageVersion) != 0)) {
28 return false;
29 }
30 return true;
31 }
32
33 byte* GetBaseAddr() const {
34 return reinterpret_cast<byte*>(base_addr_);
35 }
36
37 private:
38 static const byte kImageMagic[4];
39 static const byte kImageVersion[4];
40
41 byte magic_[4];
42 byte version_[4];
Brian Carlstroma663ea52011-08-19 23:33:41 -070043
44 // required base address for mapping the image.
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070045 uint32_t base_addr_;
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070046};
47
48} // namespace art
49
50#endif // ART_SRC_IMAGE_H_