RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
rtems-rfs-file.h
Go to the documentation of this file.
1
13/*
14 * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#if !defined (_RTEMS_RFS_FILE_H_)
22#define _RTEMS_RFS_FILE_H_
23
24#include <rtems/libio_.h>
25
30
38{
43
48
53
59
65
70
75
80
86
88
96static inline rtems_rfs_time
97rtems_rfs_file_shared_get_atime (rtems_rfs_file_shared* shared)
98{
99 return shared->atime;
100}
101
109static inline rtems_rfs_time
110rtems_rfs_file_shared_get_mtime (rtems_rfs_file_shared* shared)
111{
112 return shared->mtime;
113}
114
122static inline rtems_rfs_time
123rtems_rfs_file_shared_get_ctime (rtems_rfs_file_shared* shared)
124{
125 return shared->ctime;
126}
127
135static inline uint32_t
136rtems_rfs_file_shared_get_block_count (rtems_rfs_file_shared* shared)
137{
138 return shared->size.count;
139}
140
148static inline uint16_t
149rtems_rfs_file_shared_get_block_offset (rtems_rfs_file_shared* shared)
150{
151 return shared->size.offset;
152}
153
162static inline rtems_rfs_pos
163rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs,
164 rtems_rfs_file_shared* shared)
165{
166 return rtems_rfs_block_get_size (fs, &shared->size);
167}
168
172#define RTEMS_RFS_FILE_NO_ATIME_UPDATE (1 << 0)
175#define RTEMS_RFS_FILE_NO_MTIME_UPDATE (1 << 1)
178#define RTEMS_RFS_FILE_NO_LENGTH_UPDATE (1 << 2)
186{
190 int flags;
191
196
201
206
208
212#define rtems_rfs_file_data(_f) \
213 (rtems_rfs_buffer_data (&(_f)->buffer) + (_f)->bpos.boff)
214
218#define rtems_rfs_file_fs(_f) ((_f)->shared->fs)
219
223#define rtems_rfs_file_inode(_f) (&(_f)->shared->inode)
224
228#define rtems_rfs_file_map(_f) (&(_f)->shared->map)
229
233#define rtems_rfs_file_bpos(_f) (&(_f)->bpos)
234
238#define rtems_rfs_file_block(_f) ((_f)->bpos.bno)
239
243#define rtems_rfs_file_block_offset(_f) ((_f)->bpos.boff)
244
248#define rtems_rfs_file_set_bpos(_f, _p) \
249 rtems_rfs_block_get_bpos (rtems_rfs_file_fs (_f), _p, (&(_f)->bpos))
250
254#define rtems_rfs_file_buffer(_f) (&(_f)->buffer)
255
259#define rtems_rfs_file_update_atime(_f) \
260 (((_f)->flags & RTEMS_RFS_FILE_NO_ATIME_UPDATE) == 0)
261
265#define rtems_rfs_file_update_mtime(_f) \
266 (((_f)->flags & RTEMS_RFS_FILE_NO_MTIME_UPDATE) == 0)
267
271#define rtems_rfs_file_update_length(_f) \
272 (((_f)->flags & RTEMS_RFS_FILE_NO_LENGTH_UPDATE) == 0)
273
277#define rtems_rfs_file_get_size(_f) \
278 (&(_f)->shared->size)
279
283#define rtems_rfs_file_size(_f) \
284 rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (_f), (_f)->shared)
285
289#define rtems_rfs_file_size_count(_f) \
290 rtems_rfs_file_shared_get_block_count ((_f)->shared)
291
295#define rtems_rfs_file_size_offset(_f) \
296 rtems_rfs_file_shared_get_block_offset ((_f)->shared)
297
309 rtems_rfs_ino ino,
310 int oflag,
311 rtems_rfs_file_handle** handle);
312
323 rtems_rfs_file_handle* handle);
324
342 size_t* available,
343 bool read);
344
360 size_t size,
361 bool read);
362
374
387 rtems_rfs_pos pos,
388 rtems_rfs_pos* new_pos);
389
401
413 rtems_rfs_ino ino);
414
415
416#endif
ssize_t read(int fd, void *buffer, size_t count)
Definition: read.c:27
LibIO Internal Interface.
rtems_rfs_pos rtems_rfs_block_get_size(rtems_rfs_file_system *fs, rtems_rfs_block_size *size)
Definition: rtems-rfs-block.c:79
RTEMS File Systems Block Management.
RTEMS File System Data.
RTEMS File System Data.
uint64_t rtems_rfs_pos
Definition: rtems-rfs-file-system.h:90
int rtems_rfs_file_set_size(rtems_rfs_file_handle *handle, rtems_rfs_pos size)
Definition: rtems-rfs-file.c:471
struct _rtems_rfs_file_handle rtems_rfs_file_handle
int rtems_rfs_file_io_release(rtems_rfs_file_handle *handle)
Definition: rtems-rfs-file.c:397
rtems_rfs_file_shared * rtems_rfs_file_get_shared(rtems_rfs_file_system *fs, rtems_rfs_ino ino)
Definition: rtems-rfs-file.c:621
int rtems_rfs_file_close(rtems_rfs_file_system *fs, rtems_rfs_file_handle *handle)
Definition: rtems-rfs-file.c:145
int rtems_rfs_file_io_start(rtems_rfs_file_handle *handle, size_t *available, bool read)
Definition: rtems-rfs-file.c:222
int rtems_rfs_file_open(rtems_rfs_file_system *fs, rtems_rfs_ino ino, int oflag, rtems_rfs_file_handle **handle)
Definition: rtems-rfs-file.c:33
int rtems_rfs_file_seek(rtems_rfs_file_handle *handle, rtems_rfs_pos pos, rtems_rfs_pos *new_pos)
Definition: rtems-rfs-file.c:407
int rtems_rfs_file_io_end(rtems_rfs_file_handle *handle, size_t size, bool read)
Definition: rtems-rfs-file.c:310
struct _rtems_rfs_file_shared rtems_rfs_file_shared
RTEMS File System Information Node.
uint32_t rtems_rfs_time
Definition: rtems-rfs-inode.h:83
uint32_t rtems_rfs_ino
Definition: rtems-rfs-inode.h:78
Definition: chain.h:68
Definition: rtems-rfs-file.h:186
int flags
Definition: rtems-rfs-file.h:190
rtems_rfs_block_pos bpos
Definition: rtems-rfs-file.h:200
rtems_rfs_file_shared * shared
Definition: rtems-rfs-file.h:205
rtems_rfs_buffer_handle buffer
Definition: rtems-rfs-file.h:195
Definition: rtems-rfs-file.h:38
rtems_rfs_inode_handle inode
Definition: rtems-rfs-file.h:52
rtems_rfs_file_system * fs
Definition: rtems-rfs-file.h:85
int references
Definition: rtems-rfs-file.h:47
rtems_rfs_block_size size
Definition: rtems-rfs-file.h:64
rtems_rfs_time atime
Definition: rtems-rfs-file.h:69
rtems_rfs_time ctime
Definition: rtems-rfs-file.h:79
rtems_rfs_block_map map
Definition: rtems-rfs-file.h:58
rtems_rfs_time mtime
Definition: rtems-rfs-file.h:74
rtems_chain_node link
Definition: rtems-rfs-file.h:42
Definition: rtems-rfs-file-system.h:116
Definition: rtems-rfs-inode.h:182
Definition: rtems-rfs-block.h:93
Definition: rtems-rfs-block-pos.h:52
Definition: rtems-rfs-block-pos.h:142
rtems_rfs_block_off offset
Definition: rtems-rfs-block-pos.h:153
rtems_rfs_block_no count
Definition: rtems-rfs-block-pos.h:147
Definition: rtems-rfs-buffer.h:92
unsigned size
Definition: tte.h:1