Initial import of binutils 2.22 on the new vendor branch
[dragonfly.git] / contrib / gdb-7 / include / gdb / fileio.h
1 /* Hosted File I/O interface definitions, for GDB, the GNU Debugger.
2
3    Copyright 2003, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 #ifndef GDB_FILEIO_H_
19 #define GDB_FILEIO_H_
20
21 /* The following flags are defined to be independent of the host
22    as well as the target side implementation of these constants.
23    All constants are defined with a leading FILEIO_ in the name
24    to allow the usage of these constants together with the
25    corresponding implementation dependent constants in one module. */
26
27 /* open(2) flags */
28 #define FILEIO_O_RDONLY           0x0
29 #define FILEIO_O_WRONLY           0x1
30 #define FILEIO_O_RDWR             0x2
31 #define FILEIO_O_APPEND           0x8
32 #define FILEIO_O_CREAT          0x200
33 #define FILEIO_O_TRUNC          0x400
34 #define FILEIO_O_EXCL           0x800
35 #define FILEIO_O_SUPPORTED      (FILEIO_O_RDONLY | FILEIO_O_WRONLY| \
36                                  FILEIO_O_RDWR   | FILEIO_O_APPEND| \
37                                  FILEIO_O_CREAT  | FILEIO_O_TRUNC| \
38                                  FILEIO_O_EXCL)
39
40 /* mode_t bits */
41 #define FILEIO_S_IFREG        0100000
42 #define FILEIO_S_IFDIR         040000
43 #define FILEIO_S_IFCHR         020000
44 #define FILEIO_S_IRUSR           0400
45 #define FILEIO_S_IWUSR           0200
46 #define FILEIO_S_IXUSR           0100
47 #define FILEIO_S_IRWXU           0700
48 #define FILEIO_S_IRGRP            040
49 #define FILEIO_S_IWGRP            020
50 #define FILEIO_S_IXGRP            010
51 #define FILEIO_S_IRWXG            070
52 #define FILEIO_S_IROTH             04
53 #define FILEIO_S_IWOTH             02
54 #define FILEIO_S_IXOTH             01
55 #define FILEIO_S_IRWXO             07
56 #define FILEIO_S_SUPPORTED         (FILEIO_S_IFREG|FILEIO_S_IFDIR|  \
57                                     FILEIO_S_IRWXU|FILEIO_S_IRWXG|  \
58                                     FILEIO_S_IRWXO)
59
60 /* lseek(2) flags */
61 #define FILEIO_SEEK_SET             0
62 #define FILEIO_SEEK_CUR             1
63 #define FILEIO_SEEK_END             2
64
65 /* errno values */
66 #define FILEIO_EPERM                1
67 #define FILEIO_ENOENT               2
68 #define FILEIO_EINTR                4
69 #define FILEIO_EIO                  5
70 #define FILEIO_EBADF                9
71 #define FILEIO_EACCES              13
72 #define FILEIO_EFAULT              14
73 #define FILEIO_EBUSY               16
74 #define FILEIO_EEXIST              17
75 #define FILEIO_ENODEV              19
76 #define FILEIO_ENOTDIR             20
77 #define FILEIO_EISDIR              21
78 #define FILEIO_EINVAL              22
79 #define FILEIO_ENFILE              23
80 #define FILEIO_EMFILE              24
81 #define FILEIO_EFBIG               27
82 #define FILEIO_ENOSPC              28
83 #define FILEIO_ESPIPE              29
84 #define FILEIO_EROFS               30
85 #define FILEIO_ENOSYS              88
86 #define FILEIO_ENAMETOOLONG        91
87 #define FILEIO_EUNKNOWN          9999
88
89 /* limits */
90 #define FILEIO_INT_MIN    -2147483648L
91 #define FILEIO_INT_MAX     2147483647L
92 #define FILEIO_UINT_MAX    4294967295UL
93 #define FILEIO_LONG_MIN   -9223372036854775808LL
94 #define FILEIO_LONG_MAX    9223372036854775807LL
95 #define FILEIO_ULONG_MAX   18446744073709551615ULL
96
97 /* Integral types as used in protocol. */
98 #if 0
99 typedef __int32_t fio_int_t;
100 typedef __uint32_t fio_uint_t, fio_mode_t, fio_time_t;
101 typedef __int64_t fio_long_t;
102 typedef __uint64_t fio_ulong_t;
103 #endif
104
105 #define FIO_INT_LEN   4
106 #define FIO_UINT_LEN  4
107 #define FIO_MODE_LEN  4
108 #define FIO_TIME_LEN  4
109 #define FIO_LONG_LEN  8
110 #define FIO_ULONG_LEN 8
111
112 typedef char fio_int_t[FIO_INT_LEN];   
113 typedef char fio_uint_t[FIO_UINT_LEN];
114 typedef char fio_mode_t[FIO_MODE_LEN];
115 typedef char fio_time_t[FIO_TIME_LEN];
116 typedef char fio_long_t[FIO_LONG_LEN];
117 typedef char fio_ulong_t[FIO_ULONG_LEN];
118
119 /* Struct stat as used in protocol.  For complete independence
120    of host/target systems, it's defined as an array with offsets
121    to the members. */
122
123 struct fio_stat {
124   fio_uint_t  fst_dev;
125   fio_uint_t  fst_ino;
126   fio_mode_t  fst_mode;
127   fio_uint_t  fst_nlink;
128   fio_uint_t  fst_uid;
129   fio_uint_t  fst_gid;
130   fio_uint_t  fst_rdev;
131   fio_ulong_t fst_size;
132   fio_ulong_t fst_blksize;
133   fio_ulong_t fst_blocks;
134   fio_time_t  fst_atime;
135   fio_time_t  fst_mtime;
136   fio_time_t  fst_ctime;
137 };
138
139 struct fio_timeval {
140   fio_time_t  ftv_sec;
141   fio_long_t  ftv_usec;
142 };
143
144 #endif /* GDB_FILEIO_H_ */