summaryrefslogtreecommitdiffstats
path: root/c/src/exec/libblock/include/rtems/ramdisk.h
blob: b9e8c238b82a3ae46117960f4d84b815b5f10b26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* ramdisk.c -- RAM disk block device implementation
 *
 * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
 * Author: Victor V. Vengerov <vvv@oktet.ru>
 *
 * @(#) $Id$
 */

#ifndef __RTEMS_LIBBLOCK_RAMDISK_H__
#define __RTEMS_LIBBLOCK_RAMDISK_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <rtems.h>

#include "rtems/blkdev.h"

/* RAM disk configuration table entry */
typedef struct rtems_ramdisk_config {
    int   block_size; /* RAM disk block size */
    int   block_num;  /* Number of blocks on this RAM disk */
    void *location;   /* RAM disk permanent location (out of RTEMS controlled
                         memory), or NULL if RAM disk memory should be
                         allocated dynamically */
} rtems_ramdisk_config;

/* If application want to use RAM disk, it should specify configuration of
 * available RAM disks.
 * The following is definitions for RAM disk configuration table
 */
extern rtems_ramdisk_config rtems_ramdisk_configuration[];
extern int rtems_ramdisk_configuration_size;

/* ramdisk_initialize --
 *     RAM disk driver initialization entry point.
 */
rtems_device_driver
ramdisk_initialize(
    rtems_device_major_number major,
    rtems_device_minor_number minor,
    void *arg);

#define RAMDISK_DRIVER_TABLE_ENTRY \
    { ramdisk_initialize, GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES }

#ifdef __cplusplus
}
#endif

#endif