X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fdevices%2Fcdrom.h;h=ea4d9c5b24b0a13662715ce697a4760c6971f0d1;hb=c535b3199977444c3aa2c44b852cc82ce659c5ff;hp=fb49ad9c1e4c6f44ee554def4efed5b063de7233;hpb=a1a2be8eb002e13b1eb6ccaca40e4396f8816402;p=palacios.git diff --git a/palacios/include/devices/cdrom.h b/palacios/include/devices/cdrom.h index fb49ad9..ea4d9c5 100644 --- a/palacios/include/devices/cdrom.h +++ b/palacios/include/devices/cdrom.h @@ -1,11 +1,28 @@ + /* - * Zheng Cui - * cuizheng@cs.unm.edu - * July 2008 + * 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, Zheng Cui + * Copyright (c) 2008, The V3VEE Project + * All rights reserved. + * + * Author: Zheng Cui + * + * This is free software. You are permitted to use, + * redistribute, and modify it as specified in the file "V3VEE_LICENSE". */ -#ifndef __DEVICES_CDROM_H_ -#define __DEVICES_CDROM_H_ +#ifndef __DEVICES_CDROM_H__ +#define __DEVICES_CDROM_H__ + + +#ifdef __V3VEE__ #include #include @@ -14,58 +31,48 @@ -struct cdrom_interface; struct cdrom_ops { + /* + * Load CD-ROM. Returns false if CD is not ready. + */ + rd_bool (*insert_cdrom)(void * private_data); + + /* + * Logically eject the CD. + */ + void (*eject_cdrom)(void * private_data); - void (*init)(struct cdrom_interface *cdrom); - - /* - * Load CD-ROM. Returns false if CD is not ready. - */ - rd_bool (*insert_cdrom)(struct cdrom_interface *cdrom, char *dev /*= NULL*/); - - /* - * Logically eject the CD. - */ - void (*eject_cdrom)(struct cdrom_interface *cdrom); - - /* - * Read CD TOC. Returns false if start track is out of bounds. - */ - rd_bool (*read_toc)(struct cdrom_interface * cdrom, uint8_t * buf, int* length, rd_bool msf, int start_track); + /* + * Read CD TOC. Returns false if start track is out of bounds. + */ + rd_bool (*read_toc)(void * private_data, uchar_t * buf, int * length, rd_bool msf, int start_track); - /* - * Return CD-ROM capacity (in 2048 byte frames) - */ - uint32_t (*capacity)(struct cdrom_interface *cdrom); + /* + * Return CD-ROM capacity (in 2048 byte frames) + */ + uint32_t (*capacity)(void * private_data); - /* - * Read a single block from the CD - */ - void (*read_block)(struct cdrom_interface *cdrom, uint8_t* buf, int lba); + /* + * Read a single block from the CD + */ + void (*read_block)(void * private_data, uchar_t * buf, int lba); - /* - * Start (spin up) the CD. - */ - int (*start_cdrom)(struct cdrom_interface *cdrom); + /* + * Start (spin up) the CD. + */ + int (*start_cdrom)(void * private_data); + + void (*set_LBA)(void * private_data, uchar_t lba); }; -struct cdrom_interface { - struct cdrom_ops ops; - ulong_t fd; //memory address - ulong_t capacity_B; - ulong_t head; //current position +struct vm_device * v3_create_cdrom(struct vm_device * ramdisk_dev, void * ramdisk, uint_t ramdisk_size); - uchar_t lba; - char *path; //for ramdisk, NULL - int using_file; //no -}; -void init_cdrom(struct cdrom_interface *cdrom); +#endif // !__V3VEE__ #endif