Changeset View
Changeset View
Standalone View
Standalone View
head/sys/boot/pc98/libpc98/biosdisk.c
Show First 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | |||||
static int bd_printslice(struct open_disk *od, struct pc98_partition *dp, | static int bd_printslice(struct open_disk *od, struct pc98_partition *dp, | ||||
char *prefix, int verbose); | char *prefix, int verbose); | ||||
static int bd_printbsdslice(struct open_disk *od, daddr_t offset, | static int bd_printbsdslice(struct open_disk *od, daddr_t offset, | ||||
char *prefix, int verbose); | char *prefix, int verbose); | ||||
static int bd_init(void); | static int bd_init(void); | ||||
static int bd_strategy(void *devdata, int flag, daddr_t dblk, | static int bd_strategy(void *devdata, int flag, daddr_t dblk, | ||||
size_t offset, size_t size, char *buf, size_t *rsize); | size_t size, char *buf, size_t *rsize); | ||||
static int bd_realstrategy(void *devdata, int flag, daddr_t dblk, | static int bd_realstrategy(void *devdata, int flag, daddr_t dblk, | ||||
size_t offset, size_t size, char *buf, size_t *rsize); | size_t size, char *buf, size_t *rsize); | ||||
static int bd_open(struct open_file *f, ...); | static int bd_open(struct open_file *f, ...); | ||||
static int bd_close(struct open_file *f); | static int bd_close(struct open_file *f); | ||||
static int bd_print(int verbose); | static int bd_print(int verbose); | ||||
struct devsw biosdisk = { | struct devsw biosdisk = { | ||||
"disk", | "disk", | ||||
DEVT_DISK, | DEVT_DISK, | ||||
bd_init, | bd_init, | ||||
▲ Show 20 Lines • Show All 609 Lines • ▼ Show 20 Lines | #if 0 | ||||
/* XXX is this required? (especially if disk already open...) */ | /* XXX is this required? (especially if disk already open...) */ | ||||
if (od->od_flags & BD_FLOPPY) | if (od->od_flags & BD_FLOPPY) | ||||
delay(3000000); | delay(3000000); | ||||
#endif | #endif | ||||
free(od); | free(od); | ||||
} | } | ||||
static int | static int | ||||
bd_strategy(void *devdata, int rw, daddr_t dblk, size_t offset, size_t size, | bd_strategy(void *devdata, int rw, daddr_t dblk, size_t size, | ||||
char *buf, size_t *rsize) | char *buf, size_t *rsize) | ||||
{ | { | ||||
struct bcache_devdata bcd; | struct bcache_devdata bcd; | ||||
struct i386_devdesc *dev = devdata; | struct i386_devdesc *dev = devdata; | ||||
struct open_disk *od = (struct open_disk *)(dev->d_kind.biosdisk.data); | struct open_disk *od = (struct open_disk *)(dev->d_kind.biosdisk.data); | ||||
bcd.dv_strategy = bd_realstrategy; | bcd.dv_strategy = bd_realstrategy; | ||||
bcd.dv_devdata = devdata; | bcd.dv_devdata = devdata; | ||||
bcd.dv_cache = BD(dev).bd_bcache; | bcd.dv_cache = BD(dev).bd_bcache; | ||||
return(bcache_strategy(&bcd, rw, dblk+od->od_boff, offset, | return(bcache_strategy(&bcd, rw, dblk+od->od_boff, size, buf, rsize)); | ||||
size, buf, rsize)); | |||||
} | } | ||||
static int | static int | ||||
bd_realstrategy(void *devdata, int rw, daddr_t dblk, size_t offset, | bd_realstrategy(void *devdata, int rw, daddr_t dblk, | ||||
size_t size, char *buf, size_t *rsize) | size_t size, char *buf, size_t *rsize) | ||||
{ | { | ||||
struct open_disk *od = (struct open_disk *)(((struct i386_devdesc *)devdata)->d_kind.biosdisk.data); | struct open_disk *od = (struct open_disk *)(((struct i386_devdesc *)devdata)->d_kind.biosdisk.data); | ||||
int blks; | int blks; | ||||
#ifdef BD_SUPPORT_FRAGS | #ifdef BD_SUPPORT_FRAGS | ||||
char fragbuf[BIOSDISK_SECSIZE]; | char fragbuf[BIOSDISK_SECSIZE]; | ||||
size_t fragsize; | size_t fragsize; | ||||
▲ Show 20 Lines • Show All 349 Lines • Show Last 20 Lines |