L4Re Operating System Framework
Interface and Usage Documentation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ro_file.h
1/*
2 * (c) 2010 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
3 * Alexander Warg <warg@os.inf.tu-dresden.de>
4 * economic rights: Technische Universität Dresden (Germany)
5 *
6 * License: see LICENSE.spdx (in this directory or the directories above)
7 */
8#pragma once
9
10#include <l4/l4re_vfs/backend>
11
12namespace L4Re { namespace Core {
13
14class Ro_file : public L4Re::Vfs::Be_file_pos
15{
16private:
18 off64_t _size;
19 char const *_addr;
20
21public:
22 explicit Ro_file(L4::Cap<L4Re::Dataspace> ds) noexcept
23 : Be_file_pos(), _ds(ds), _addr(0)
24 {
25 _size = _ds->size();
26 }
27
28 L4::Cap<L4Re::Dataspace> data_space() noexcept override { return _ds; }
29
30 int fstat64(struct stat64 *buf) const noexcept override;
31
32 int ioctl(unsigned long, va_list) noexcept override;
33
34 off64_t size() const noexcept override { return _size; }
35
36 int get_status_flags() const noexcept override
37 { return O_RDONLY; }
38
39 int set_status_flags(long) noexcept override
40 { return 0; }
41
52 bool check_ready(Ready_type rt) noexcept override
53 { return rt == Read; }
54
55 ~Ro_file() noexcept;
56
57private:
58 ssize_t read_single(const struct iovec*, off64_t) noexcept;
59 ssize_t preadv(const struct iovec *, int, off64_t) noexcept override;
60 ssize_t pwritev(const struct iovec *, int , off64_t) noexcept override;
61};
62
63
64}}
Ready_type
Type of I/O operation/condition a file can indicate readiness.
Definition vfs.h:60
C++ interface for capabilities.
Definition capability.h:219
L4Re C++ Interfaces.
Definition cmd_control:14