source: mainline/uspace/srv/fs/tmpfs/tmpfs.h@ 75701004

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 75701004 was 75701004, checked in by Martin Decky <martin@…>, 7 years ago

use a TAR as the archive format for populating TMPFS root file system

Also remove the logic of populating a TMPFS file system from the TMPFS
file system driver. A more elegant separation of concerns is to populate
the file system from the client. This is now done by the init task (if
required) and should work universally for any file system.

  • Property mode set to 100644
File size: 2.7 KB
RevLine 
[d5cdffe]1/*
[0ee4322]2 * Copyright (c) 2008 Jakub Jermar
[d5cdffe]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 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup fs
30 * @{
[ed903174]31 */
[d5cdffe]32
33#ifndef TMPFS_TMPFS_H_
34#define TMPFS_TMPFS_H_
35
36#include <libfs.h>
37#include <atomic.h>
[8d2dd7f2]38#include <stddef.h>
[3e6a98c5]39#include <stdbool.h>
[d9c8c81]40#include <adt/hash_table.h>
[d5cdffe]41
[cf95bc0]42#define TMPFS_NODE(node) ((node) ? (tmpfs_node_t *)(node)->data : NULL)
[b6035ba]43#define FS_NODE(node) ((node) ? (node)->bp : NULL)
44
[ade06b4]45typedef enum {
46 TMPFS_NONE,
47 TMPFS_FILE,
48 TMPFS_DIRECTORY
49} tmpfs_dentry_type_t;
50
[cf95bc0]51/* forward declaration */
52struct tmpfs_node;
53
[d5cdffe]54typedef struct tmpfs_dentry {
[cf95bc0]55 link_t link; /**< Linkage for the list of siblings. */
56 struct tmpfs_node *node;/**< Back pointer to TMPFS node. */
57 char *name; /**< Name of dentry. */
58} tmpfs_dentry_t;
59
60typedef struct tmpfs_node {
[b6035ba]61 fs_node_t *bp; /**< Back pointer to the FS node. */
[f2ec8c8]62 fs_index_t index; /**< TMPFS node index. */
[15f3c3f]63 service_id_t service_id;/**< Service ID of block device. */
[062d900]64 ht_link_t nh_link; /**< Nodes hash table link. */
[ade06b4]65 tmpfs_dentry_type_t type;
[adc8a63]66 unsigned lnkcnt; /**< Link count. */
[4b11571]67 size_t size; /**< File size if type is TMPFS_FILE. */
68 void *data; /**< File content's if type is TMPFS_FILE. */
[b72efe8]69 list_t cs_list; /**< Child's siblings list. */
[cf95bc0]70} tmpfs_node_t;
[d5cdffe]71
[efcebe1]72extern vfs_out_ops_t tmpfs_ops;
[40257f5]73extern libfs_ops_t tmpfs_libfs_ops;
74
[8d049ee0]75extern bool tmpfs_init(void);
[40257f5]76
[d5cdffe]77#endif
78
79/**
80 * @}
81 */
Note: See TracBrowser for help on using the repository browser.