X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fdevices%2Fblock_dev.h;fp=palacios%2Finclude%2Fdevices%2Fblock_dev.h;h=574c5afb3e3f2a638bb5128817181f71bf6cf8da;hb=942df9bb1e2570764d24c74f797247536639502e;hp=0000000000000000000000000000000000000000;hpb=57164c930523141c4ef53782de214d2a9f468269;p=palacios.git diff --git a/palacios/include/devices/block_dev.h b/palacios/include/devices/block_dev.h new file mode 100644 index 0000000..574c5af --- /dev/null +++ b/palacios/include/devices/block_dev.h @@ -0,0 +1,66 @@ + +/* + * This file is part of the Palacios Virtual Machine Monitor developed + * by the V3VEE Project with funding from the United States National + * Science Foundation and the Department of Energy. + * + * The V3VEE Project is a joint project between Northwestern University + * and the University of New Mexico. You can find out more at + * http://www.v3vee.org + * + * Copyright (c) 2008, Jack Lange + * Copyright (c) 2008, The V3VEE Project + * All rights reserved. + * + * Author: Jack Lange + * + * This is free software. You are permitted to use, + * redistribute, and modify it as specified in the file "V3VEE_LICENSE". + */ + +#ifndef __DEVICES_BLOCK_DEV_H__ +#define __DEVICES_BLOCK_DEV_H__ + +#ifdef __V3VEE__ + + + +#define ATAPI_BLOCK_SIZE 2048 +#define HD_SECTOR_SIZE 512 + + +struct v3_hd_ops { + uint64_t (*get_capacity)(void * private_data); + // Reads always operate on 2048 byte blocks + int (*read)(uint8_t * buf, int sector_count, uint64_t lba, void * private_data); + int (*write)(uint8_t * buf, int sector_count, uint64_t lba, void * private_data); +}; + + + +struct v3_cd_ops { + uint32_t (*get_capacity)(void * private_data); + // Reads always operate on 2048 byte blocks + int (*read)(uint8_t * buf, int block_count, uint64_t lba, void * private_data); +}; + + +typedef enum {BLOCK_NONE, BLOCK_DISK, BLOCK_CDROM} v3_block_type_t; + + + +static const char * block_dev_type_strs[] = {"NONE", "HARDDISK", "CDROM" }; + +static inline const char * v3_block_type_to_str(v3_block_type_t type) { + if (type > BLOCK_CDROM) { + return NULL; + } + return block_dev_type_strs[type]; +} + + + +#endif + + +#endif