1/*
2Copyright (c) 2012, Broadcom Europe Ltd
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the copyright holder nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28// File service required types
29
30#ifndef VCFILESYS_DEFS_H
31#define VCFILESYS_DEFS_H
32
33#include <time.h> // for time_t
34
35/* Define type fattributes_t and struct dirent for use in file system functions */
36
37typedef int fattributes_t;
38//enum {ATTR_RDONLY=1, ATTR_DIRENT=2};
39#define ATTR_RDONLY 0x01 /* Read only file attributes */
40#define ATTR_HIDDEN 0x02 /* Hidden file attributes */
41#define ATTR_SYSTEM 0x04 /* System file attributes */
42#define ATTR_VOLUME 0x08 /* Volume Label file attributes */
43#define ATTR_DIRENT 0x10 /* Dirrectory file attributes */
44#define ATTR_ARCHIVE 0x20 /* Archives file attributes */
45#define ATTR_NORMAL 0x00 /* Normal file attributes */
46
47#define D_NAME_MAX_SIZE 256
48
49#ifndef _DIRENT_H // This should really be in a dirent.h header to avoid conflicts
50struct dirent
51{
52 char d_name[D_NAME_MAX_SIZE];
53 unsigned int d_size;
54 fattributes_t d_attrib;
55 time_t d_creatime;
56 time_t d_modtime;
57};
58#endif // ifndef _DIRENT_H
59
60#define FS_MAX_PATH 256 // The maximum length of a pathname
61/* Although not used in the API, this value is required on the host and
62VC01 sides of the file system, even if there is no host side. Putting it in
63vc_fileservice_defs.h is not appropriate as it would only be included if there
64was a host side. */
65
66/* File system error codes */
67#define FS_BAD_USER -7000 // The task isn't registered as a file system user
68
69#define FS_BAD_FILE -7001 // The path or filename or file descriptor is invalid
70#define FS_BAD_PARM -7002 // Invalid parameter given
71#define FS_ACCESS -7003 // File access conflict
72#define FS_MAX_FILES -7004 // Maximum number of files already open
73#define FS_NOEMPTY -7005 // Directory isn't empty
74#define FS_MAX_SIZE -7006 // File is over the maximum file size
75
76#define FS_NO_DISK -7007 // No disk is present, or the disk has not been opened
77#define FS_DISK_ERR -7008 // There is a problem with the disk
78
79#define FS_IO_ERROR -7009 // Driver level error
80
81#define FS_FMT_ERR -7010 // Format error
82
83#define FS_NO_BUFFER -7011 // Internal Nucleus File buffer not available
84#define FS_NUF_INT -7012 // Internal Nucleus File error
85
86#define FS_UNSPEC_ERR -7013 // Unspecified error
87
88#endif
89