Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
26123e88
Commit
26123e88
authored
Jun 28, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
34c8c098
371135bd
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
45 additions
and
11 deletions
+45
-11
Documentation/networking/pktgen.txt
Documentation/networking/pktgen.txt
+2
-2
fs/aio.c
fs/aio.c
+6
-0
include/linux/aio.h
include/linux/aio.h
+3
-4
include/net/sock.h
include/net/sock.h
+2
-2
net/decnet/dn_nsp_in.c
net/decnet/dn_nsp_in.c
+1
-1
net/socket.c
net/socket.c
+31
-2
No files found.
Documentation/networking/pktgen.txt
View file @
26123e88
...
...
@@ -11,13 +11,13 @@ How to use the Linux packet generator module.
5. After this two commands are defined:
A. "pg" to start generator and to get results.
B. "pgset" to change generator parameters. F.e.
pgset "clone_skb 100" sets the number of cop
p
ies of the same packet
pgset "clone_skb 100" sets the number of copies of the same packet
will be sent before a new packet is allocated
pgset "clone_skb 0" use multiple SKBs for packet generation
pgset "pkt_size 9014" sets packet size to 9014
pgset "frags 5" packet will consist of 5 fragments
pgset "count 200000" sets number of packets to send, set to zero
for contin
ious sends until
l explicitly
for contin
uous sends unti
l explicitly
stopped.
pgset "ipg 5000" sets artificial gap inserted between packets
to 5000 nanoseconds
...
...
fs/aio.c
View file @
26123e88
...
...
@@ -396,6 +396,8 @@ static struct kiocb fastcall *__aio_get_req(struct kioctx *ctx)
req
->
ki_cancel
=
NULL
;
req
->
ki_retry
=
NULL
;
req
->
ki_obj
.
user
=
NULL
;
req
->
ki_dtor
=
NULL
;
req
->
private
=
NULL
;
/* Check if the completion queue has enough free space to
* accept an event from this io.
...
...
@@ -436,9 +438,13 @@ static inline struct kiocb *aio_get_req(struct kioctx *ctx)
static
inline
void
really_put_req
(
struct
kioctx
*
ctx
,
struct
kiocb
*
req
)
{
if
(
req
->
ki_dtor
)
req
->
ki_dtor
(
req
);
req
->
ki_ctx
=
NULL
;
req
->
ki_filp
=
NULL
;
req
->
ki_obj
.
user
=
NULL
;
req
->
ki_dtor
=
NULL
;
req
->
private
=
NULL
;
kmem_cache_free
(
kiocb_cachep
,
req
);
ctx
->
reqs_active
--
;
...
...
include/linux/aio.h
View file @
26123e88
...
...
@@ -23,8 +23,6 @@ struct kioctx;
#define KIOCB_SYNC_KEY (~0U)
#define KIOCB_PRIVATE_SIZE (24 * sizeof(long))
/* ki_flags bits */
#define KIF_LOCKED 0
#define KIF_KICKED 1
...
...
@@ -55,6 +53,7 @@ struct kiocb {
struct
kioctx
*
ki_ctx
;
/* may be NULL for sync ops */
int
(
*
ki_cancel
)(
struct
kiocb
*
,
struct
io_event
*
);
long
(
*
ki_retry
)(
struct
kiocb
*
);
void
(
*
ki_dtor
)(
struct
kiocb
*
);
struct
list_head
ki_list
;
/* the aio core uses this
* for cancellation */
...
...
@@ -65,8 +64,7 @@ struct kiocb {
}
ki_obj
;
__u64
ki_user_data
;
/* user's data for completion */
loff_t
ki_pos
;
char
private
[
KIOCB_PRIVATE_SIZE
];
void
*
private
;
};
#define is_sync_kiocb(iocb) ((iocb)->ki_key == KIOCB_SYNC_KEY)
...
...
@@ -79,6 +77,7 @@ struct kiocb {
(x)->ki_filp = (filp); \
(x)->ki_ctx = &tsk->active_mm->default_kioctx; \
(x)->ki_cancel = NULL; \
(x)->ki_dtor = NULL; \
(x)->ki_obj.tsk = tsk; \
} while (0)
...
...
include/net/sock.h
View file @
26123e88
...
...
@@ -617,17 +617,17 @@ struct sock_iocb {
struct
scm_cookie
*
scm
;
struct
msghdr
*
msg
,
async_msg
;
struct
iovec
async_iov
;
struct
kiocb
*
kiocb
;
};
static
inline
struct
sock_iocb
*
kiocb_to_siocb
(
struct
kiocb
*
iocb
)
{
BUG_ON
(
sizeof
(
struct
sock_iocb
)
>
KIOCB_PRIVATE_SIZE
);
return
(
struct
sock_iocb
*
)
iocb
->
private
;
}
static
inline
struct
kiocb
*
siocb_to_kiocb
(
struct
sock_iocb
*
si
)
{
return
container_of
((
void
*
)
si
,
struct
kiocb
,
private
)
;
return
si
->
kiocb
;
}
struct
socket_alloc
{
...
...
net/decnet/dn_nsp_in.c
View file @
26123e88
...
...
@@ -504,7 +504,7 @@ static void dn_nsp_linkservice(struct sock *sk, struct sk_buff *skb)
struct
dn_scp
*
scp
=
DN_SK
(
sk
);
unsigned
short
segnum
;
unsigned
char
lsflags
;
char
fcval
;
signed
char
fcval
;
int
wake_up
=
0
;
char
*
ptr
=
skb
->
data
;
unsigned
char
fctype
=
scp
->
services_rem
&
NSP_FC_MASK
;
...
...
net/socket.c
View file @
26123e88
...
...
@@ -548,9 +548,11 @@ static inline int __sock_sendmsg(struct kiocb *iocb, struct socket *sock,
int
sock_sendmsg
(
struct
socket
*
sock
,
struct
msghdr
*
msg
,
size_t
size
)
{
struct
kiocb
iocb
;
struct
sock_iocb
siocb
;
int
ret
;
init_sync_kiocb
(
&
iocb
,
NULL
);
iocb
.
private
=
&
siocb
;
ret
=
__sock_sendmsg
(
&
iocb
,
sock
,
msg
,
size
);
if
(
-
EIOCBQUEUED
==
ret
)
ret
=
wait_on_sync_kiocb
(
&
iocb
);
...
...
@@ -581,15 +583,22 @@ int sock_recvmsg(struct socket *sock, struct msghdr *msg,
size_t
size
,
int
flags
)
{
struct
kiocb
iocb
;
struct
sock_iocb
siocb
;
int
ret
;
init_sync_kiocb
(
&
iocb
,
NULL
);
iocb
.
private
=
&
siocb
;
ret
=
__sock_recvmsg
(
&
iocb
,
sock
,
msg
,
size
,
flags
);
if
(
-
EIOCBQUEUED
==
ret
)
ret
=
wait_on_sync_kiocb
(
&
iocb
);
return
ret
;
}
static
void
sock_aio_dtor
(
struct
kiocb
*
iocb
)
{
kfree
(
iocb
->
private
);
}
/*
* Read data from a socket. ubuf is a user mode pointer. We make sure the user
* area ubuf...ubuf+size-1 is writable before asking the protocol.
...
...
@@ -598,7 +607,7 @@ int sock_recvmsg(struct socket *sock, struct msghdr *msg,
static
ssize_t
sock_aio_read
(
struct
kiocb
*
iocb
,
char
__user
*
ubuf
,
size_t
size
,
loff_t
pos
)
{
struct
sock_iocb
*
x
=
kiocb_to_siocb
(
iocb
)
;
struct
sock_iocb
*
x
,
siocb
;
struct
socket
*
sock
;
int
flags
;
...
...
@@ -607,6 +616,16 @@ static ssize_t sock_aio_read(struct kiocb *iocb, char __user *ubuf,
if
(
size
==
0
)
/* Match SYS5 behaviour */
return
0
;
if
(
is_sync_kiocb
(
iocb
))
x
=
&
siocb
;
else
{
x
=
kmalloc
(
sizeof
(
struct
sock_iocb
),
GFP_KERNEL
);
if
(
!
x
)
return
-
ENOMEM
;
iocb
->
ki_dtor
=
sock_aio_dtor
;
}
iocb
->
private
=
x
;
x
->
kiocb
=
iocb
;
sock
=
SOCKET_I
(
iocb
->
ki_filp
->
f_dentry
->
d_inode
);
x
->
async_msg
.
msg_name
=
NULL
;
...
...
@@ -631,7 +650,7 @@ static ssize_t sock_aio_read(struct kiocb *iocb, char __user *ubuf,
static
ssize_t
sock_aio_write
(
struct
kiocb
*
iocb
,
const
char
__user
*
ubuf
,
size_t
size
,
loff_t
pos
)
{
struct
sock_iocb
*
x
=
kiocb_to_siocb
(
iocb
)
;
struct
sock_iocb
*
x
,
siocb
;
struct
socket
*
sock
;
if
(
pos
!=
0
)
...
...
@@ -639,6 +658,16 @@ static ssize_t sock_aio_write(struct kiocb *iocb, const char __user *ubuf,
if
(
size
==
0
)
/* Match SYS5 behaviour */
return
0
;
if
(
is_sync_kiocb
(
iocb
))
x
=
&
siocb
;
else
{
x
=
kmalloc
(
sizeof
(
struct
sock_iocb
),
GFP_KERNEL
);
if
(
!
x
)
return
-
ENOMEM
;
iocb
->
ki_dtor
=
sock_aio_dtor
;
}
iocb
->
private
=
x
;
x
->
kiocb
=
iocb
;
sock
=
SOCKET_I
(
iocb
->
ki_filp
->
f_dentry
->
d_inode
);
x
->
async_msg
.
msg_name
=
NULL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment