ramdisk.c File Reference

RAM disks. More...

#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


Detailed Description

RAM disks.

Definition in file ramdisk.c.


Function Documentation

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.

Parameters:
blockdev Block device
block Block number
count Block count
buffer Data buffer
Return values:
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.

Parameters:
blockdev Block device
block Block number
count Block count
buffer Data buffer
Return values:
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 }

int init_ramdisk ( struct ramdisk ramdisk,
userptr_t  data,
size_t  len,
unsigned int  blksize 
)

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 }


Variable Documentation

Initial value:

 {
        .read   = ramdisk_read,
        .write  = ramdisk_write
}

Definition at line 80 of file ramdisk.c.


Generated on Tue Apr 6 20:01:16 2010 for gPXE by  doxygen 1.5.7.1