Changeset View
Changeset View
Standalone View
Standalone View
head/sys/boot/efi/libefi/efipart.c
Show All 35 Lines | |||||
#include <efi.h> | #include <efi.h> | ||||
#include <efilib.h> | #include <efilib.h> | ||||
#include <efiprot.h> | #include <efiprot.h> | ||||
static EFI_GUID blkio_guid = BLOCK_IO_PROTOCOL; | static EFI_GUID blkio_guid = BLOCK_IO_PROTOCOL; | ||||
static int efipart_init(void); | static int efipart_init(void); | ||||
static int efipart_strategy(void *, int, daddr_t, size_t, size_t, char *, | static int efipart_strategy(void *, int, daddr_t, size_t, char *, size_t *); | ||||
size_t *); | static int efipart_realstrategy(void *, int, daddr_t, size_t, char *, size_t *); | ||||
static int efipart_realstrategy(void *, int, daddr_t, size_t, size_t, char *, | |||||
size_t *); | |||||
static int efipart_open(struct open_file *, ...); | static int efipart_open(struct open_file *, ...); | ||||
static int efipart_close(struct open_file *); | static int efipart_close(struct open_file *); | ||||
static int efipart_print(int); | static int efipart_print(int); | ||||
struct devsw efipart_dev = { | struct devsw efipart_dev = { | ||||
.dv_name = "part", | .dv_name = "part", | ||||
.dv_type = DEVT_DISK, | .dv_type = DEVT_DISK, | ||||
.dv_init = efipart_init, | .dv_init = efipart_init, | ||||
▲ Show 20 Lines • Show All 228 Lines • ▼ Show 20 Lines | efipart_readwrite(EFI_BLOCK_IO *blkio, int rw, daddr_t blk, daddr_t nblks, | ||||
} | } | ||||
if (EFI_ERROR(status)) | if (EFI_ERROR(status)) | ||||
printf("%s: rw=%d, status=%lu\n", __func__, rw, (u_long)status); | printf("%s: rw=%d, status=%lu\n", __func__, rw, (u_long)status); | ||||
return (efi_status_to_errno(status)); | return (efi_status_to_errno(status)); | ||||
} | } | ||||
static int | static int | ||||
efipart_strategy(void *devdata, int rw, daddr_t blk, size_t offset, | efipart_strategy(void *devdata, int rw, daddr_t blk, size_t size, | ||||
size_t size, char *buf, size_t *rsize) | char *buf, size_t *rsize) | ||||
{ | { | ||||
struct bcache_devdata bcd; | struct bcache_devdata bcd; | ||||
struct devdesc *dev; | struct devdesc *dev; | ||||
dev = (struct devdesc *)devdata; | dev = (struct devdesc *)devdata; | ||||
bcd.dv_strategy = efipart_realstrategy; | bcd.dv_strategy = efipart_realstrategy; | ||||
bcd.dv_devdata = devdata; | bcd.dv_devdata = devdata; | ||||
bcd.dv_cache = PD(dev).pd_bcache; | bcd.dv_cache = PD(dev).pd_bcache; | ||||
return (bcache_strategy(&bcd, rw, blk, offset, size, | return (bcache_strategy(&bcd, rw, blk, size, buf, rsize)); | ||||
buf, rsize)); | |||||
} | } | ||||
static int | static int | ||||
efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t offset, | efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t size, | ||||
size_t size, char *buf, size_t *rsize) | char *buf, size_t *rsize) | ||||
{ | { | ||||
struct devdesc *dev = (struct devdesc *)devdata; | struct devdesc *dev = (struct devdesc *)devdata; | ||||
EFI_BLOCK_IO *blkio; | EFI_BLOCK_IO *blkio; | ||||
off_t off; | off_t off; | ||||
char *blkbuf; | char *blkbuf; | ||||
size_t blkoff, blksz; | size_t blkoff, blksz; | ||||
int error; | int error; | ||||
▲ Show 20 Lines • Show All 56 Lines • Show Last 20 Lines |