3
Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>
4
This program and the accompanying materials are licensed and made
5
available under the terms and conditions of the BSD License that
6
accompanies this distribution. The full text of the license may be found at
7
http://opensource.org/licenses/bsd-license.
9
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
Copyright (c) 1982, 1986, 1989, 1993
13
The Regents of the University of California. All rights reserved.
14
(c) UNIX System Laboratories, Inc.
15
All or some portions of this file are derived from material licensed
16
to the University of California by American Telephone and Telegraph
17
Co. or Unix System Laboratories, Inc. and are reproduced herein with
18
the permission of UNIX System Laboratories, Inc.
20
Redistribution and use in source and binary forms, with or without
21
modification, are permitted provided that the following conditions
23
1. Redistributions of source code must retain the above copyright
24
notice, this list of conditions and the following disclaimer.
25
2. Redistributions in binary form must reproduce the above copyright
26
notice, this list of conditions and the following disclaimer in the
27
documentation and/or other materials provided with the distribution.
28
3. Neither the name of the University nor the names of its contributors
29
may be used to endorse or promote products derived from this software
30
without specific prior written permission.
32
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
33
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
34
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
36
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
41
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44
stat.h 8.12 (Berkeley) 8/17/94
45
NetBSD: stat.h,v 1.54 2006/02/24 22:01:30 thorpej Exp
50
#include <sys/featuretest.h>
51
#include <sys/types.h>
55
off_t st_size; ///< file size, in bytes
56
off_t st_physsize; ///< physical space the file consumes
57
off_t st_curpos; ///< current position within the file, or XY coord. for Console
58
dtime_t st_birthtime; ///< time of creation
59
dtime_t st_atime; ///< time of last access
60
dtime_t st_mtime; ///< time of last data modification
61
mode_t st_mode; ///< file attributes
63
blksize_t st_blksize; ///< optimal blocksize for I/O
67
#define S_ISUID 0004000 ///< set user id on execution
68
#define S_ISGID 0002000 ///< set group id on execution
69
#define S_ISTXT 0001000 ///< sticky bit
71
#define S_IRWXU 0000700 ///< RWX mask for owner
72
#define S_IRUSR 0000400 ///< R for owner
73
#define S_IWUSR 0000200 ///< W for owner
74
#define S_IXUSR 0000100 ///< X for owner
76
#define S_IREAD S_IRUSR
77
#define S_IWRITE S_IWUSR
78
#define S_IEXEC S_IXUSR
80
#define S_IRWXG 0000070 ///< RWX mask for group
81
#define S_IRGRP 0000040 ///< R for group
82
#define S_IWGRP 0000020 ///< W for group
83
#define S_IXGRP 0000010 ///< X for group
85
#define S_IRWXO 0000007 ///< RWX mask for other
86
#define S_IROTH 0000004 ///< R for other
87
#define S_IWOTH 0000002 ///< W for other
88
#define S_IXOTH 0000001 ///< X for other
90
/* The Octal access modes, above, fall into the Hex mask 0x00000FFF.
91
Traditionally, the remainder of the flags are specified in Octal
92
but they are expressed in Hex here for modern clarity.
94
The basic file types, specified within 0x0000F000, are mutually exclusive.
96
#define _S_IFMT 0x000FF000 ///< type-of-file mask
97
#define _S_IFIFO 0x00001000 ///< named pipe (fifo)
98
#define _S_IFCHR 0x00002000 ///< character special device
99
#define _S_IFDIR 0x00004000 ///< directory
100
#define _S_IFBLK 0x00006000 ///< block special device
101
#define _S_IFREG 0x00008000 ///< regular
102
#define _S_IFSOCK 0x0000C000 ///< socket
103
#define _S_ITTY 0x00010000 ///< File connects to a TTY device
104
#define _S_IWTTY 0x00020000 ///< TTY sends and receives Wide characters
105
#define _S_ICONSOLE 0x00030000 ///< UEFI Console Device
107
/* UEFI specific (FAT file system) File attributes.
108
Specified in Hexadecimal instead of Octal.
109
These bits correspond to the xx portion of _S_IFMT
111
#define S_IREADONLY 0x00100000 // Read Only File
112
#define S_IHIDDEN 0x00200000 // Hidden File
113
#define S_ISYSTEM 0x00400000 // System File
114
#define S_IDIRECTORY 0x01000000 // Directory
115
#define S_IARCHIVE 0x02000000 // Archive Bit
116
#define S_IROFS 0x08000000 ///< Read Only File System
118
#define S_EFIONLY 0xFFF00000 ///< Flags only used by the EFI system calls.
120
#define S_EFISHIFT 20 // LS bit of the UEFI attributes
122
#define S_IFMT _S_IFMT
123
#define S_IFBLK _S_IFBLK
124
#define S_IFREG _S_IFREG
125
#define S_IFIFO _S_IFIFO
126
#define S_IFCHR _S_IFCHR
127
#define S_IFDIR _S_IFDIR
128
#define S_IFSOCK _S_IFSOCK
130
#define S_ISDIR(m) ((m & _S_IFMT) == _S_IFDIR) ///< directory
131
#define S_ISCHR(m) ((m & _S_IFMT) == _S_IFCHR) ///< char special
132
#define S_ISREG(m) ((m & _S_IFMT) == _S_IFREG) ///< regular file
133
#define S_ISBLK(m) ((m & _S_IFMT) == _S_IFBLK) ///< block special
134
#define S_ISSOCK(m) ((m & _S_IFMT) == _S_IFSOCK) ///< socket
136
#define S_ISFIFO(m) ((m & _S_IFMT) == _S_IFIFO) ///< fifo
138
/* The following three macros have been changed to reflect
139
access permissions that better reflect the UEFI FAT file system.
140
UEFI only supports Read or Read+Write instead of the *nix
141
rwx paradigm. Thus, using 0777 is the closest analog.
143
#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777
144
#define ALLPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777
145
#define DEFFILEMODE (S_IRWXU|S_IRWXG|S_IRWXO) ///< 0777
147
#define READ_PERMS (S_IRUSR | S_IRGRP | S_IROTH) ///< 0444
148
#define WRITE_PERMS (S_IWUSR | S_IWGRP | S_IWOTH) ///< 0222
149
#define EXEC_PERMS (S_IXUSR | S_IXGRP | S_IXOTH) ///< 0111
151
#define S_BLKSIZE 512 ///< block size used in the stat struct
154
* Definitions of flags stored in file flags word.
156
* Super-user and owner changeable flags.
158
#define UF_SETTABLE 0x0000ffff ///< mask of owner changeable flags
159
#define UF_NODUMP 0x00000001 ///< do not dump file
160
#define UF_IMMUTABLE 0x00000002 ///< file may not be changed
161
#define UF_APPEND 0x00000004 ///< writes to file may only append
162
/* UF_NOUNLINK 0x00000010 [NOT IMPLEMENTED] */
164
* Super-user changeable flags.
166
#define SF_SETTABLE 0xffff0000 ///< mask of superuser changeable flags
167
#define SF_ARCHIVED 0x00010000 ///< file is archived
168
#define SF_IMMUTABLE 0x00020000 ///< file may not be changed
169
#define SF_APPEND 0x00040000 ///< writes to file may only append
170
/* SF_NOUNLINK 0x00100000 [NOT IMPLEMENTED] */
172
#include <sys/EfiCdefs.h>
175
#ifndef __STAT_SYSCALLS_DECLARED
176
#define __STAT_SYSCALLS_DECLARED
180
mode_t umask (mode_t);
184
int mkdir (const char *, mode_t);
188
int fstat (int, struct stat *);
192
int lstat (const char *, struct stat *);
196
int stat (const char *, struct stat *);
200
int chmod (const char *, mode_t);
201
#endif // __STAT_SYSCALLS_DECLARED
204
#endif /* !_SYS_STAT_H_ */