Seastar
High performance C++ framework for concurrent servers
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
a
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
v
w
y
Functions
a
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
v
w
y
Variables
Typedefs
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Typedefs
Enumerations
Related Functions
Files
File List
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Modules
Pages
seastar
util
internal
iovec_utils.hh
1
/*
2
* This file is open source software, licensed to you under the terms
3
* of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4
* distributed with this work for additional information regarding copyright
5
* ownership. You may not use this file except in compliance with the License.
6
*
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing,
12
* software distributed under the License is distributed on an
13
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
* KIND, either express or implied. See the License for the
15
* specific language governing permissions and limitations
16
* under the License.
17
*/
18
/*
19
* Copyright (C) 2022 ScyllaDB.
20
*/
21
22
#ifndef SEASTAR_MODULE
23
#include <sys/types.h>
24
#endif
25
26
#pragma once
27
28
namespace
seastar
{
29
namespace
internal {
30
31
inline
size_t
iovec_len(
const
iovec* begin,
size_t
len)
32
{
33
size_t
ret = 0;
34
auto
end = begin + len;
35
while
(begin != end) {
36
ret += begin++->iov_len;
37
}
38
return
ret;
39
}
40
41
inline
size_t
iovec_len(
const
std::vector<iovec>& iov)
42
{
43
size_t
ret = 0;
44
for
(
auto
&& e : iov) {
45
ret += e.iov_len;
46
}
47
return
ret;
48
}
49
50
// Given a properly aligned vector of iovecs, ensures that it respects the
51
// IOV_MAX limit, by trimming if necessary. The modified vector still satisfied
52
// the alignment requirements.
53
// Returns the final total length of all iovecs.
54
size_t
sanitize_iovecs(std::vector<iovec>& iov,
size_t
disk_alignment)
noexcept
;
55
56
}
// internal namespace
57
}
// seastar namespace
seastar
Seastar API namespace.
Definition:
abort_on_ebadf.hh:26
Generated by
1.9.4