#include <gpxe/blockdev.h>
#include <gpxe/ramdisk.h>
Go to the source code of this file.
Functions | |
| FILE_LICENCE (GPL2_OR_LATER) | |
| static | __attribute__ ((always_inline)) |
| static int | ramdisk_read (struct block_device *blockdev, uint64_t block, unsigned long count, userptr_t buffer) |
| Read block. | |
| static int | ramdisk_write (struct block_device *blockdev, uint64_t block, unsigned long count, userptr_t buffer) |
| Write block. | |
| int | init_ramdisk (struct ramdisk *ramdisk, userptr_t data, size_t len, unsigned int blksize) |
Variables | |
| static struct block_device_operations | ramdisk_operations |
Definition in file ramdisk.c.
| FILE_LICENCE | ( | GPL2_OR_LATER | ) |
| static __attribute__ | ( | (always_inline) | ) | [inline, static] |
Definition at line 31 of file ramdisk.c.
References container_of.
00032 { 00033 return container_of ( blockdev, struct ramdisk, blockdev ); 00034 }
| static int ramdisk_read | ( | struct block_device * | blockdev, | |
| uint64_t | block, | |||
| unsigned long | count, | |||
| userptr_t | buffer | |||
| ) | [static] |
Read block.
| blockdev | Block device | |
| block | Block number | |
| count | Block count | |
| buffer | Data buffer |
| rc | Return status code |
Definition at line 45 of file ramdisk.c.
References block_device::blksize, ramdisk::data, DBGC, memcpy_user(), and offset.
00046 { 00047 struct ramdisk *ramdisk = block_to_ramdisk ( blockdev ); 00048 unsigned long offset = ( block * blockdev->blksize ); 00049 unsigned long length = ( count * blockdev->blksize ); 00050 00051 DBGC ( ramdisk, "RAMDISK %p reading [%lx,%lx)\n", 00052 ramdisk, offset, length ); 00053 00054 memcpy_user ( buffer, 0, ramdisk->data, offset, length ); 00055 return 0; 00056 }
| static int ramdisk_write | ( | struct block_device * | blockdev, | |
| uint64_t | block, | |||
| unsigned long | count, | |||
| userptr_t | buffer | |||
| ) | [static] |
Write block.
| blockdev | Block device | |
| block | Block number | |
| count | Block count | |
| buffer | Data buffer |
| rc | Return status code |
Definition at line 67 of file ramdisk.c.
References block_device::blksize, ramdisk::data, DBGC, memcpy_user(), and offset.
00068 { 00069 struct ramdisk *ramdisk = block_to_ramdisk ( blockdev ); 00070 unsigned long offset = ( block * blockdev->blksize ); 00071 unsigned long length = ( count * blockdev->blksize ); 00072 00073 DBGC ( ramdisk, "RAMDISK %p writing [%lx,%lx)\n", 00074 ramdisk, offset, length ); 00075 00076 memcpy_user ( ramdisk->data, offset, buffer, 0, length ); 00077 return 0; 00078 }
Definition at line 85 of file ramdisk.c.
References block_device::blksize, ramdisk::blockdev, block_device::blocks, ramdisk::data, and block_device::op.
Referenced by eltorito_exec().
00086 { 00087 00088 if ( ! blksize ) 00089 blksize = 512; 00090 00091 ramdisk->data = data; 00092 ramdisk->blockdev.op = &ramdisk_operations; 00093 ramdisk->blockdev.blksize = blksize; 00094 ramdisk->blockdev.blocks = ( len / blksize ); 00095 00096 return 0; 00097 }
struct block_device_operations ramdisk_operations [static] |
Initial value:
{
.read = ramdisk_read,
.write = ramdisk_write
}
1.5.7.1