Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2204 → Rev 2205

/branches/fs/kernel/generic/src/lib/rd.c
42,19 → 42,27
#include <mm/frame.h>
#include <sysinfo/sysinfo.h>
#include <ddi/ddi.h>
#include <print.h>
 
static parea_t rd_parea; /**< Physical memory area for rd. */
 
int init_rd(rd_header * header, size_t size)
{
printf("Header magic %c%c%c%c\n",header->magic[0],header->magic[1],header->magic[2],header->magic[3]);
 
/* Identify RAM disk */
if ((header->magic[0] != RD_MAG0) || (header->magic[1] != RD_MAG1) ||
(header->magic[2] != RD_MAG2) || (header->magic[3] != RD_MAG3))
return RE_INVALID;
 
printf("Header version %d\n",header->version);
printf("Expected version %d\n",RD_VERSION);
/* Identify version */
if (header->version != RD_VERSION)
return RE_UNSUPPORTED;
 
printf("Header type %d\n",header->data_type);
uint32_t hsize;
uint64_t dsize;
69,11 → 77,16
break;
default:
return RE_UNSUPPORTED;
}
}
 
printf("Header size %d\n",header->header_size);
printf("Data size %d\n",header->data_size);
printf("Size %d\n",size);
if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE))
//jelen: does this make any sense? (we don't even care about the header size, do we?)
/*if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE))
return RE_UNSUPPORTED;
*/
if (hsize > size)
return RE_INVALID;