Project

General

Profile

Statistics
| Branch: | Revision:

root / prex-0.9.0 / usr / server / fs / ramfs / ramfs.h @ 03e9c04a

History | View | Annotate | Download (2.7 KB)

1
/*
2
 * Copyright (c) 2006-2007, Kohsuke Ohtani
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 * 3. Neither the name of the author nor the names of any co-contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
 * SUCH DAMAGE.
28
 */
29

    
30
#ifndef _RAMFS_H
31
#define _RAMFS_H
32

    
33
#include <sys/cdefs.h>
34
#include <sys/prex.h>
35
#include <sys/types.h>
36

    
37
/* #define DEBUG_RAMFS 1 */
38

    
39
#ifdef DEBUG_RAMFS
40
#define DPRINTF(a)        dprintf a
41
#define ASSERT(e)        dassert(e)
42
#else
43
#define DPRINTF(a)        do {} while (0)
44
#define ASSERT(e)
45
#endif
46

    
47
#if CONFIG_FS_THREADS > 1
48
#define malloc(s)                malloc_r(s)
49
#define free(p)                        free_r(p)
50
#else
51
#define mutex_init(m)                do {} while (0)
52
#define mutex_destroy(m)        do {} while (0)
53
#define mutex_lock(m)                do {} while (0)
54
#define mutex_unlock(m)                do {} while (0)
55
#define mutex_trylock(m)        do {} while (0)
56
#endif
57

    
58
/*
59
 * File/directory node for RAMFS
60
 */
61
struct ramfs_node {
62
        struct        ramfs_node *rn_next;   /* next node in the same directory */
63
        struct        ramfs_node *rn_child;  /* first child node */
64
        int         rn_type;        /* file or directory */
65
        char        *rn_name;        /* name (null-terminated) */
66
        size_t         rn_namelen;        /* length of name not including terminator */
67
        size_t         rn_size;        /* file size */
68
        char        *rn_buf;        /* buffer to the file data */
69
        size_t         rn_bufsize;        /* allocated buffer size */
70
};
71

    
72
__BEGIN_DECLS
73
struct ramfs_node *ramfs_allocate_node(char *name, int type);
74
void ramfs_free_node(struct ramfs_node *node);
75
__END_DECLS
76

    
77
#endif /* !_RAMFS_H */