xref: /third_party/NuttX/fs/nfs/nfs_node.h (revision beacf11b)
1/****************************************************************************
2 * fs/nfs/nfs_node.h
3 *
4 *   Copyright (C) 2012-2013, 2017 Gregory Nutt. All rights reserved.
5 *   Copyright (C) 2012 Jose Pablo Rojas Vargas. All rights reserved.
6 *   Author: Jose Pablo Rojas Vargas <jrojas@nx-engineering.com>
7 *           Gregory Nutt <gnutt@nuttx.org>
8 *
9 * Leveraged from OpenBSD:
10 *
11 *   Copyright (c) 1989, 1993
12 *   The Regents of the University of California.  All rights reserved.
13 *
14 * This code is derived from software contributed to Berkeley by
15 * Rick Macklem at The University of Guelph.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 *
21 * 1. Redistributions of source code must retain the above copyright
22 *    notice, this list of conditions and the following disclaimer.
23 * 2. Redistributions in binary form must reproduce the above copyright
24 *    notice, this list of conditions and the following disclaimer in the
25 *    documentation and/or other materials provided with the distribution.
26 * 3. Neither the name of the University nor the names of its contributors
27 *    may be used to endorse or promote products derived from this software
28 *    without specific prior written permission.
29 *
30 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
31 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
34 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
38 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
39 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
40 * SUCH DAMAGE.
41 *
42 ****************************************************************************/
43
44#ifndef __FS_NFS_NFS_NODE_H
45#define __FS_NFS_NFS_NODE_H
46
47/****************************************************************************
48 * Included Files
49 ****************************************************************************/
50
51#include "nfs_proto.h"
52
53#ifdef __cplusplus
54#if __cplusplus
55extern "C" {
56#endif /* __cplusplus */
57#endif /* __cplusplus */
58
59/****************************************************************************
60 * Pre-processor Definitions
61 ****************************************************************************/
62
63/* Flags for struct nfsnode n_flag */
64
65#define NFSNODE_OPEN           (1 << 0) /* File is still open */
66#define NFSNODE_MODIFIED       (1 << 1) /* Might have a modified buffer */
67
68/****************************************************************************
69 * Public Types
70 ****************************************************************************/
71
72/* There is a unique nfsnode allocated for each active file.  An nfsnode is
73 * 'named' by its file handle.
74 */
75
76struct nfsnode
77{
78  struct nfsnode    *n_next;        /* Retained in a singly linked list. */
79  uint8_t            n_crefs;       /* Reference count (for nfs_dup) */
80  uint8_t            n_type;        /* File type */
81  uint8_t            n_fhsize;      /* Size in bytes of the file handle */
82  uint8_t            n_pfhsize;     /* Size in bytes of the file handle of parent */
83  uint8_t            n_flags;       /* Node flags */
84  uint16_t           n_mode;        /* File mode for fstat() */
85  time_t             n_atime;       /* File access time */
86  time_t             n_ctime;       /* File creation time */
87  struct timespec    n_timestamp;   /* Timestamp (modification time) */
88  nfsfh_t            n_fhandle;     /* NFS File Handle */
89  nfsfh_t            n_pfhandle;    /* NFS File Handle of parent */
90  uint64_t           n_size;        /* Current size of file */
91  int                n_oflags;      /* Flags provided when file was opened */
92  loff_t             n_fpos;        /* NFS File position */
93  struct file       *n_filep;       /* File pointer from VFS */
94  char              *n_name;
95};
96
97#ifdef __cplusplus
98#if __cplusplus
99}
100#endif /* __cplusplus */
101#endif /* __cplusplus */
102
103#endif /* __FS_NFS_NFS_NODE_H */
104