changed all char to unsigned char
This commit is contained in:
parent
2fd109e1dd
commit
359521e12e
46
include/fs.h
46
include/fs.h
@ -15,14 +15,14 @@ one inode equipped with one 512 bytes block
|
|||||||
class SuperBlock{
|
class SuperBlock{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SuperBlock(const char *directory){
|
SuperBlock(const uchar *directory){
|
||||||
|
|
||||||
}
|
}
|
||||||
~SuperBlock(){
|
~SuperBlock(){
|
||||||
|
|
||||||
}
|
}
|
||||||
static u_int64_t getFreeListHead(RawDisk &disk){
|
static u_int64_t getFreeListHead(RawDisk &disk){
|
||||||
char buffer[8] = {0};
|
uchar buffer[8] = {0};
|
||||||
disk.rawdisk_read(0, buffer, sizeof(buffer));
|
disk.rawdisk_read(0, buffer, sizeof(buffer));
|
||||||
u_int64_t t = 0;
|
u_int64_t t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
@ -31,7 +31,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void writeFreeListHead(RawDisk &disk, u_int64_t t){
|
static void writeFreeListHead(RawDisk &disk, u_int64_t t){
|
||||||
char buffer[8] = {0};
|
uchar buffer[8] = {0};
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
buffer[j] = (t >> (8 * j)) & 0xFF;
|
buffer[j] = (t >> (8 * j)) & 0xFF;
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static u_int64_t getFreeINodeHead(RawDisk &disk){
|
static u_int64_t getFreeINodeHead(RawDisk &disk){
|
||||||
char buffer[8] = {0};
|
uchar buffer[8] = {0};
|
||||||
disk.rawdisk_read(8, buffer, sizeof(buffer));
|
disk.rawdisk_read(8, buffer, sizeof(buffer));
|
||||||
u_int64_t t = 0;
|
u_int64_t t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
@ -48,7 +48,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void writeFreeINodeHead(RawDisk &disk, u_int64_t t){
|
static void writeFreeINodeHead(RawDisk &disk, u_int64_t t){
|
||||||
char buffer[8] = {0};
|
uchar buffer[8] = {0};
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
buffer[j] = (t >> (8 * j)) & 0xFF;
|
buffer[j] = (t >> (8 * j)) & 0xFF;
|
||||||
}
|
}
|
||||||
@ -70,14 +70,14 @@ class INode{
|
|||||||
u_int64_t block_number;
|
u_int64_t block_number;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void read_get_byte(u_int64_t &t, int ¤t_pos, char *buffer){
|
void read_get_byte(u_int64_t &t, int ¤t_pos, uchar *buffer){
|
||||||
t = 0;
|
t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t = t | (((u_int64_t)buffer[j+current_pos])<<(8*j));
|
t = t | (((u_int64_t)buffer[j+current_pos])<<(8*j));
|
||||||
current_pos += 8;
|
current_pos += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u_int64_t read_byte_at(int current_pos, char *buffer){
|
static u_int64_t read_byte_at(int current_pos, uchar *buffer){
|
||||||
u_int64_t t = 0;
|
u_int64_t t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t = t | (((u_int64_t)buffer[j+current_pos])<<(8*j));
|
t = t | (((u_int64_t)buffer[j+current_pos])<<(8*j));
|
||||||
@ -85,7 +85,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void inode_construct(u_int64_t blockNumber, RawDisk &disk){
|
void inode_construct(u_int64_t blockNumber, RawDisk &disk){
|
||||||
char buffer[SECTOR_SIZE] = {0};
|
uchar buffer[SECTOR_SIZE] = {0};
|
||||||
disk.rawdisk_read(blockNumber*SECTOR_SIZE, buffer, sizeof(buffer));
|
disk.rawdisk_read(blockNumber*SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
block_number = blockNumber;
|
block_number = blockNumber;
|
||||||
int current_pos = 0;
|
int current_pos = 0;
|
||||||
@ -102,7 +102,7 @@ public:
|
|||||||
read_get_byte(size, current_pos, buffer);
|
read_get_byte(size, current_pos, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_get_byte(u_int64_t t, int ¤t_pos, char *buffer){
|
void write_get_byte(u_int64_t t, int ¤t_pos, uchar *buffer){
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
buffer[j+current_pos] = t & (((u_int64_t)1<<(8))-1);
|
buffer[j+current_pos] = t & (((u_int64_t)1<<(8))-1);
|
||||||
t >>= 8;
|
t >>= 8;
|
||||||
@ -110,7 +110,7 @@ public:
|
|||||||
current_pos += 8;
|
current_pos += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_byte_at(u_int64_t t, int current_pos, char *buffer){
|
static void write_byte_at(u_int64_t t, int current_pos, uchar *buffer){
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
buffer[j+current_pos] = t & (((u_int64_t)1<<(8))-1);
|
buffer[j+current_pos] = t & (((u_int64_t)1<<(8))-1);
|
||||||
t >>= 8;
|
t >>= 8;
|
||||||
@ -118,7 +118,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void inode_save(RawDisk &disk){
|
void inode_save(RawDisk &disk){
|
||||||
char buffer[SECTOR_SIZE] = {0};
|
uchar buffer[SECTOR_SIZE] = {0};
|
||||||
int current_pos = 0;
|
int current_pos = 0;
|
||||||
for (int i = 0; i < 48; i++){
|
for (int i = 0; i < 48; i++){
|
||||||
write_get_byte(blocks[i], current_pos, buffer);
|
write_get_byte(blocks[i], current_pos, buffer);
|
||||||
@ -141,7 +141,7 @@ public:
|
|||||||
2. data block starting position
|
2. data block starting position
|
||||||
3. r/w between storage and rawdisk to maintain
|
3. r/w between storage and rawdisk to maintain
|
||||||
*/
|
*/
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
u_int64_t freeBlockNum = 0;
|
u_int64_t freeBlockNum = 0;
|
||||||
disk.rawdisk_read(freeListHead, buffer, sizeof(buffer));
|
disk.rawdisk_read(freeListHead, buffer, sizeof(buffer));
|
||||||
for (int i = 8; i < 264; i++){
|
for (int i = 8; i < 264; i++){
|
||||||
@ -176,7 +176,7 @@ public:
|
|||||||
single_i = datablock_allocate_in_list(disk);
|
single_i = datablock_allocate_in_list(disk);
|
||||||
}
|
}
|
||||||
bool inSingle = false;
|
bool inSingle = false;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
disk.rawdisk_read(single_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(single_i, buffer, sizeof(buffer));
|
||||||
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
||||||
u_int64_t addr = read_byte_at(i, buffer);
|
u_int64_t addr = read_byte_at(i, buffer);
|
||||||
@ -195,7 +195,7 @@ public:
|
|||||||
double_i = datablock_allocate_in_list(disk);
|
double_i = datablock_allocate_in_list(disk);
|
||||||
}
|
}
|
||||||
bool inDouble = false;
|
bool inDouble = false;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
disk.rawdisk_read(double_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(double_i, buffer, sizeof(buffer));
|
||||||
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
||||||
u_int64_t addr = read_byte_at(i, buffer);
|
u_int64_t addr = read_byte_at(i, buffer);
|
||||||
@ -215,7 +215,7 @@ public:
|
|||||||
triple_i = datablock_allocate_in_list(disk);
|
triple_i = datablock_allocate_in_list(disk);
|
||||||
}
|
}
|
||||||
bool inTriple = false;
|
bool inTriple = false;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
disk.rawdisk_read(triple_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(triple_i, buffer, sizeof(buffer));
|
||||||
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
for (int i = 0; i < IO_BLOCK_SIZE; i+=8){
|
||||||
u_int64_t addr = read_byte_at(i, buffer);
|
u_int64_t addr = read_byte_at(i, buffer);
|
||||||
@ -265,7 +265,7 @@ public:
|
|||||||
u_int64_t freeBlockHead = ((freeBlockNum/SECTOR_SIZE-MAX_INODE)/(8*2048)*(8*2048)+MAX_INODE)*SECTOR_SIZE;
|
u_int64_t freeBlockHead = ((freeBlockNum/SECTOR_SIZE-MAX_INODE)/(8*2048)*(8*2048)+MAX_INODE)*SECTOR_SIZE;
|
||||||
|
|
||||||
// mark it alive in its bitmap
|
// mark it alive in its bitmap
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
bool notEmpty = false;
|
bool notEmpty = false;
|
||||||
disk.rawdisk_read(freeBlockHead, buffer, sizeof(buffer));
|
disk.rawdisk_read(freeBlockHead, buffer, sizeof(buffer));
|
||||||
for (int i = 8; i < 264; i++){
|
for (int i = 8; i < 264; i++){
|
||||||
@ -290,7 +290,7 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
u_int64_t freeBlockNum = 0;
|
u_int64_t freeBlockNum = 0;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
int delpoint = -1;
|
int delpoint = -1;
|
||||||
disk.rawdisk_read(single_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(single_i, buffer, sizeof(buffer));
|
||||||
for (int i=4088; i >= 0; i--){
|
for (int i=4088; i >= 0; i--){
|
||||||
@ -317,7 +317,7 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
u_int64_t freeBlockNum = 0;
|
u_int64_t freeBlockNum = 0;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
int delpoint = -1;
|
int delpoint = -1;
|
||||||
disk.rawdisk_read(double_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(double_i, buffer, sizeof(buffer));
|
||||||
for (int i=4088; i >= 0; i-=8){
|
for (int i=4088; i >= 0; i-=8){
|
||||||
@ -344,7 +344,7 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
u_int64_t freeBlockNum = 0;
|
u_int64_t freeBlockNum = 0;
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
int delpoint = -1;
|
int delpoint = -1;
|
||||||
disk.rawdisk_read(triple_i, buffer, sizeof(buffer));
|
disk.rawdisk_read(triple_i, buffer, sizeof(buffer));
|
||||||
for (int i=4088; i >= 0; i-=8){
|
for (int i=4088; i >= 0; i-=8){
|
||||||
@ -402,7 +402,7 @@ public:
|
|||||||
// initialize Inode list head
|
// initialize Inode list head
|
||||||
SuperBlock::writeFreeINodeHead(disk, 1);
|
SuperBlock::writeFreeINodeHead(disk, 1);
|
||||||
for (u_int64_t i = 1; i < MAX_INODE; i++){
|
for (u_int64_t i = 1; i < MAX_INODE; i++){
|
||||||
char buffer[SECTOR_SIZE] = {0};
|
uchar buffer[SECTOR_SIZE] = {0};
|
||||||
u_int64_t t = i + 1;
|
u_int64_t t = i + 1;
|
||||||
if (t < MAX_INODE){
|
if (t < MAX_INODE){
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
@ -414,7 +414,7 @@ public:
|
|||||||
SuperBlock::writeFreeListHead(disk, MAX_INODE*SECTOR_SIZE); // maximum inode number 2^19 0x80000
|
SuperBlock::writeFreeListHead(disk, MAX_INODE*SECTOR_SIZE); // maximum inode number 2^19 0x80000
|
||||||
//Have tested this initialize function but MAX_BLOCK too much, MAX_INODE*2 works
|
//Have tested this initialize function but MAX_BLOCK too much, MAX_INODE*2 works
|
||||||
for (u_int64_t i = MAX_INODE; i < MAX_BLOCKNUM-4096; i += 2048*8){
|
for (u_int64_t i = MAX_INODE; i < MAX_BLOCKNUM-4096; i += 2048*8){
|
||||||
char buffer[IO_BLOCK_SIZE] = {0};
|
uchar buffer[IO_BLOCK_SIZE] = {0};
|
||||||
u_int64_t t = (i + 2048*8)*SECTOR_SIZE;
|
u_int64_t t = (i + 2048*8)*SECTOR_SIZE;
|
||||||
//t is address, storing in to buffer
|
//t is address, storing in to buffer
|
||||||
for (int j = 0; j < 8; j++){
|
for (int j = 0; j < 8; j++){
|
||||||
@ -428,7 +428,7 @@ public:
|
|||||||
// the i-th inode is in the i-th block
|
// the i-th inode is in the i-th block
|
||||||
u_int64_t inode_allocate(RawDisk &disk){
|
u_int64_t inode_allocate(RawDisk &disk){
|
||||||
u_int64_t freeINodeHead = SuperBlock::getFreeINodeHead(disk);
|
u_int64_t freeINodeHead = SuperBlock::getFreeINodeHead(disk);
|
||||||
char buffer[SECTOR_SIZE] = {0};
|
uchar buffer[SECTOR_SIZE] = {0};
|
||||||
disk.rawdisk_read(freeINodeHead*SECTOR_SIZE, buffer, sizeof(buffer));
|
disk.rawdisk_read(freeINodeHead*SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
u_int64_t newINodeHead = INode::read_byte_at(0, buffer);
|
u_int64_t newINodeHead = INode::read_byte_at(0, buffer);
|
||||||
// deal with no more INode
|
// deal with no more INode
|
||||||
@ -442,7 +442,7 @@ public:
|
|||||||
// free the inode and add it to the free inode list head
|
// free the inode and add it to the free inode list head
|
||||||
void inode_free(RawDisk &disk, u_int64_t INodeNumber){
|
void inode_free(RawDisk &disk, u_int64_t INodeNumber){
|
||||||
u_int64_t freeINodeHead = SuperBlock::getFreeINodeHead(disk);
|
u_int64_t freeINodeHead = SuperBlock::getFreeINodeHead(disk);
|
||||||
char buffer[SECTOR_SIZE] = {0};
|
uchar buffer[SECTOR_SIZE] = {0};
|
||||||
INode::write_byte_at(freeINodeHead, 0, buffer);
|
INode::write_byte_at(freeINodeHead, 0, buffer);
|
||||||
disk.rawdisk_write(INodeNumber*SECTOR_SIZE, buffer, sizeof(buffer));
|
disk.rawdisk_write(INodeNumber*SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
SuperBlock::writeFreeINodeHead(disk, INodeNumber);
|
SuperBlock::writeFreeINodeHead(disk, INodeNumber);
|
||||||
|
@ -6,15 +6,17 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
|
|
||||||
|
typedef unsigned char uchar;
|
||||||
|
|
||||||
class RawDisk{
|
class RawDisk{
|
||||||
|
|
||||||
int fd;
|
int fd;
|
||||||
const char* dir;
|
const uchar* dir;
|
||||||
u_int64_t numSectors;
|
u_int64_t numSectors;
|
||||||
u_int64_t diskSize;
|
u_int64_t diskSize;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RawDisk(const char *directory) : fd(-1), dir(nullptr), numSectors(0), diskSize(0) {
|
RawDisk(const uchar *directory) : fd(-1), dir(nullptr), numSectors(0), diskSize(0) {
|
||||||
dir = directory;
|
dir = directory;
|
||||||
/*dir = strdup("/dev/vdc");
|
/*dir = strdup("/dev/vdc");
|
||||||
numSectors = 62914560;
|
numSectors = 62914560;
|
||||||
@ -48,7 +50,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int rawdisk_read(u_int64_t offset, char *buffer, size_t length) {
|
int rawdisk_read(u_int64_t offset, uchar *buffer, size_t length) {
|
||||||
if (lseek(fd, offset, SEEK_SET) == (u_int64_t)-1) {
|
if (lseek(fd, offset, SEEK_SET) == (u_int64_t)-1) {
|
||||||
perror("Error seeking to offset");
|
perror("Error seeking to offset");
|
||||||
return -1;
|
return -1;
|
||||||
@ -64,7 +66,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write a specified number of bytes at a given byte offset
|
// Write a specified number of bytes at a given byte offset
|
||||||
int rawdisk_write(u_int64_t offset, char *buffer, size_t length) {
|
int rawdisk_write(u_int64_t offset, uchar *buffer, size_t length) {
|
||||||
if (lseek(fd, offset, SEEK_SET) == (u_int64_t)-1) {
|
if (lseek(fd, offset, SEEK_SET) == (u_int64_t)-1) {
|
||||||
perror("Error seeking to offset");
|
perror("Error seeking to offset");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
int main(){
|
int main(){
|
||||||
fischl *F = new fischl;
|
fischl *F = new fischl;
|
||||||
F->init();
|
F->init();
|
||||||
char *d = strdup("/dev/vdc");
|
uchar *d = strdup("/dev/vdc");
|
||||||
RawDisk *H = new RawDisk(d);
|
RawDisk *H = new RawDisk(d);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -3,13 +3,13 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "rawdisk.h"
|
#include "rawdisk.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, uchar *argv[]) {
|
||||||
const char* d = (argc < 2) ? "/dev/vdc" : argv[1];
|
const uchar* d = (argc < 2) ? "/dev/vdc" : argv[1];
|
||||||
|
|
||||||
RawDisk *H = new RawDisk(d);
|
RawDisk *H = new RawDisk(d);
|
||||||
|
|
||||||
char *buf = "iloveosdfjlseirfnerig";
|
uchar *buf = "iloveosdfjlseirfnerig";
|
||||||
char readBuffer[512] = {0}; // Initialize to zeros
|
uchar readBuffer[512] = {0}; // Initialize to zeros
|
||||||
|
|
||||||
//printf("dir %s, numSectors %lld, diskSize %lld \n", H->dir, H->numSectors, H->diskSize);
|
//printf("dir %s, numSectors %lld, diskSize %lld \n", H->dir, H->numSectors, H->diskSize);
|
||||||
|
|
||||||
|
@ -4,27 +4,27 @@
|
|||||||
#include "fs.h"
|
#include "fs.h"
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, uchar *argv[]) {
|
||||||
const char* d = (argc < 2) ? "/dev/vdc" : argv[1];
|
const uchar* d = (argc < 2) ? "/dev/vdc" : argv[1];
|
||||||
|
|
||||||
RawDisk *H = new RawDisk(d);
|
RawDisk *H = new RawDisk(d);
|
||||||
|
|
||||||
printf("test inode\n");
|
printf("test inode\n");
|
||||||
INodeOperation inop;
|
INodeOperation inop;
|
||||||
inop.initialize(*H);
|
inop.initialize(*H);
|
||||||
char buffer[8] = {0};
|
uchar buffer[8] = {0};
|
||||||
//test the begining of inode 1~524287
|
//test the begining of inode 1~524287
|
||||||
H->rawdisk_read((1) * SECTOR_SIZE, buffer, sizeof(buffer));
|
H->rawdisk_read((1) * SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
u_int64_t t = 0;
|
u_int64_t t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t |= ((u_int64_t)(unsigned char)buffer[j]) << (8 * j);
|
t |= ((u_int64_t)(uchar)buffer[j]) << (8 * j);
|
||||||
|
|
||||||
assert(t == 2);
|
assert(t == 2);
|
||||||
//test the number before end of inode 524286
|
//test the number before end of inode 524286
|
||||||
H->rawdisk_read((MAX_INODE - 2) * SECTOR_SIZE, buffer, sizeof(buffer));
|
H->rawdisk_read((MAX_INODE - 2) * SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
t = 0;
|
t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t |= ((u_int64_t)(unsigned char)buffer[j]) << (8 * j);
|
t |= ((u_int64_t)(uchar)buffer[j]) << (8 * j);
|
||||||
|
|
||||||
fprintf(stderr,"[t %llu,%d]\n",t,__LINE__);
|
fprintf(stderr,"[t %llu,%d]\n",t,__LINE__);
|
||||||
assert(t == MAX_INODE - 1);
|
assert(t == MAX_INODE - 1);
|
||||||
@ -32,21 +32,21 @@ int main(int argc, char *argv[]) {
|
|||||||
H->rawdisk_read((MAX_INODE - 1) * SECTOR_SIZE, buffer, sizeof(buffer));
|
H->rawdisk_read((MAX_INODE - 1) * SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
t = 0;
|
t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t |= ((u_int64_t)(unsigned char)buffer[j]) << (8 * j);
|
t |= ((u_int64_t)(uchar)buffer[j]) << (8 * j);
|
||||||
|
|
||||||
assert(t == 0);
|
assert(t == 0);
|
||||||
//test the begining of datablock
|
//test the begining of datablock
|
||||||
H->rawdisk_read((MAX_INODE) * SECTOR_SIZE, buffer, sizeof(buffer));
|
H->rawdisk_read((MAX_INODE) * SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
t = 0;
|
t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t |= ((u_int64_t)(unsigned char)buffer[j]) << (8 * j);
|
t |= ((u_int64_t)(uchar)buffer[j]) << (8 * j);
|
||||||
|
|
||||||
assert(t == (MAX_INODE+2048*8)*SECTOR_SIZE);
|
assert(t == (MAX_INODE+2048*8)*SECTOR_SIZE);
|
||||||
//test the end of the datablock
|
//test the end of the datablock
|
||||||
H->rawdisk_read((MAX_BLOCKNUM - 2048*8) * SECTOR_SIZE, buffer, sizeof(buffer));
|
H->rawdisk_read((MAX_BLOCKNUM - 2048*8) * SECTOR_SIZE, buffer, sizeof(buffer));
|
||||||
t = 0;
|
t = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
t |= ((u_int64_t)(unsigned char)buffer[j]) << (8 * j);
|
t |= ((u_int64_t)(uchar)buffer[j]) << (8 * j);
|
||||||
|
|
||||||
assert(t == (MAX_BLOCKNUM)*SECTOR_SIZE);
|
assert(t == (MAX_BLOCKNUM)*SECTOR_SIZE);
|
||||||
//initialize
|
//initialize
|
||||||
|
Loading…
x
Reference in New Issue
Block a user