Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
uio.h
Go to the documentation of this file.
1
/*
2
* Berkeley style UIO structures - Alan Cox 1994.
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version
7
* 2 of the License, or (at your option) any later version.
8
*/
9
#ifndef __LINUX_UIO_H
10
#define __LINUX_UIO_H
11
12
#include <
uapi/linux/uio.h
>
13
14
15
struct
kvec
{
16
void
*
iov_base
;
/* and that should *never* hold a userland pointer */
17
size_t
iov_len
;
18
};
19
20
/*
21
* Total number of bytes covered by an iovec.
22
*
23
* NOTE that it is not safe to use this function until all the iovec's
24
* segment lengths have been validated. Because the individual lengths can
25
* overflow a size_t when added together.
26
*/
27
static
inline
size_t
iov_length(
const
struct
iovec
*iov,
unsigned
long
nr_segs)
28
{
29
unsigned
long
seg
;
30
size_t
ret
= 0;
31
32
for
(seg = 0; seg < nr_segs; seg++)
33
ret += iov[seg].iov_len;
34
return
ret
;
35
}
36
37
unsigned
long
iov_shorten
(
struct
iovec
*iov,
unsigned
long
nr_segs,
size_t
to);
38
#endif
Generated on Thu Jan 10 2013 14:52:43 for Linux Kernel by
1.8.2