Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
linux-seco-imx
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Iterations
Jira
Code
Merge requests
12
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Clea OS
bsp
nxp
linux-seco-imx
Commits
92236878
Commit
92236878
authored
11 years ago
by
Kent Overstreet
Committed by
Al Viro
11 years ago
Browse files
Options
Downloads
Patches
Plain Diff
iov_iter: Move iov_iter to uio.h
Signed-off-by:
Kent Overstreet
<
kmo@daterainc.com
>
parent
8142c184
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
include/linux/fs.h
+0
-32
0 additions, 32 deletions
include/linux/fs.h
include/linux/uio.h
+50
-0
50 additions, 0 deletions
include/linux/uio.h
with
50 additions
and
32 deletions
include/linux/fs.h
+
0
−
32
View file @
92236878
...
@@ -295,38 +295,6 @@ struct page;
...
@@ -295,38 +295,6 @@ struct page;
struct
address_space
;
struct
address_space
;
struct
writeback_control
;
struct
writeback_control
;
struct
iov_iter
{
const
struct
iovec
*
iov
;
unsigned
long
nr_segs
;
size_t
iov_offset
;
size_t
count
;
};
size_t
iov_iter_copy_from_user_atomic
(
struct
page
*
page
,
struct
iov_iter
*
i
,
unsigned
long
offset
,
size_t
bytes
);
size_t
iov_iter_copy_from_user
(
struct
page
*
page
,
struct
iov_iter
*
i
,
unsigned
long
offset
,
size_t
bytes
);
void
iov_iter_advance
(
struct
iov_iter
*
i
,
size_t
bytes
);
int
iov_iter_fault_in_readable
(
struct
iov_iter
*
i
,
size_t
bytes
);
size_t
iov_iter_single_seg_count
(
const
struct
iov_iter
*
i
);
static
inline
void
iov_iter_init
(
struct
iov_iter
*
i
,
const
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
size_t
count
,
size_t
written
)
{
i
->
iov
=
iov
;
i
->
nr_segs
=
nr_segs
;
i
->
iov_offset
=
0
;
i
->
count
=
count
+
written
;
iov_iter_advance
(
i
,
written
);
}
static
inline
size_t
iov_iter_count
(
struct
iov_iter
*
i
)
{
return
i
->
count
;
}
/*
/*
* "descriptor" for what we're up to with a read.
* "descriptor" for what we're up to with a read.
* This allows us to use the same read code yet
* This allows us to use the same read code yet
...
...
This diff is collapsed.
Click to expand it.
include/linux/uio.h
+
50
−
0
View file @
92236878
...
@@ -9,14 +9,23 @@
...
@@ -9,14 +9,23 @@
#ifndef __LINUX_UIO_H
#ifndef __LINUX_UIO_H
#define __LINUX_UIO_H
#define __LINUX_UIO_H
#include
<linux/kernel.h>
#include
<uapi/linux/uio.h>
#include
<uapi/linux/uio.h>
struct
page
;
struct
kvec
{
struct
kvec
{
void
*
iov_base
;
/* and that should *never* hold a userland pointer */
void
*
iov_base
;
/* and that should *never* hold a userland pointer */
size_t
iov_len
;
size_t
iov_len
;
};
};
struct
iov_iter
{
const
struct
iovec
*
iov
;
unsigned
long
nr_segs
;
size_t
iov_offset
;
size_t
count
;
};
/*
/*
* Total number of bytes covered by an iovec.
* Total number of bytes covered by an iovec.
*
*
...
@@ -34,8 +43,49 @@ static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs)
...
@@ -34,8 +43,49 @@ static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs)
return
ret
;
return
ret
;
}
}
static
inline
struct
iovec
iov_iter_iovec
(
const
struct
iov_iter
*
iter
)
{
return
(
struct
iovec
)
{
.
iov_base
=
iter
->
iov
->
iov_base
+
iter
->
iov_offset
,
.
iov_len
=
min
(
iter
->
count
,
iter
->
iov
->
iov_len
-
iter
->
iov_offset
),
};
}
#define iov_for_each(iov, iter, start) \
for (iter = (start); \
(iter).count && \
((iov = iov_iter_iovec(&(iter))), 1); \
iov_iter_advance(&(iter), (iov).iov_len))
unsigned
long
iov_shorten
(
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
size_t
to
);
unsigned
long
iov_shorten
(
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
size_t
to
);
size_t
iov_iter_copy_from_user_atomic
(
struct
page
*
page
,
struct
iov_iter
*
i
,
unsigned
long
offset
,
size_t
bytes
);
size_t
iov_iter_copy_from_user
(
struct
page
*
page
,
struct
iov_iter
*
i
,
unsigned
long
offset
,
size_t
bytes
);
void
iov_iter_advance
(
struct
iov_iter
*
i
,
size_t
bytes
);
int
iov_iter_fault_in_readable
(
struct
iov_iter
*
i
,
size_t
bytes
);
size_t
iov_iter_single_seg_count
(
const
struct
iov_iter
*
i
);
static
inline
void
iov_iter_init
(
struct
iov_iter
*
i
,
const
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
size_t
count
,
size_t
written
)
{
i
->
iov
=
iov
;
i
->
nr_segs
=
nr_segs
;
i
->
iov_offset
=
0
;
i
->
count
=
count
+
written
;
iov_iter_advance
(
i
,
written
);
}
static
inline
size_t
iov_iter_count
(
struct
iov_iter
*
i
)
{
return
i
->
count
;
}
int
memcpy_fromiovec
(
unsigned
char
*
kdata
,
struct
iovec
*
iov
,
int
len
);
int
memcpy_fromiovec
(
unsigned
char
*
kdata
,
struct
iovec
*
iov
,
int
len
);
int
memcpy_toiovec
(
struct
iovec
*
iov
,
unsigned
char
*
kdata
,
int
len
);
int
memcpy_toiovec
(
struct
iovec
*
iov
,
unsigned
char
*
kdata
,
int
len
);
#endif
#endif
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment