searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

sk的锁

2024-11-26 09:11:20
2
0

1、发包流程(设置sk_lock.owned1,但不占用spinlock锁)

tcp_sendmsg

lock_sock

lock_sock_nested

2收包流程(占用spinlock锁)

1)、如果sk_lock.owned1,说明当前sk正在发包,因此需要延迟收包,先将报文放到backlog里,等发包结束后,再去收包;

2)、如果sk_lock.owned0,说明当前sk没有子在发包,可以正常收包,因此直接通过tcp_v4_do_rcv接收报文,整个接收过程占用spinlock锁,发包流程被阻塞。

 

3backlog流程(不占用spinlock锁,sk_lock.owned1

当发包流程结束后,会通过release_sock去处理之前保存在backlog里的还没来的及处理的接收报文。

tcp_sendmsg

release_sock

__release_sock

sk_backlog_rcv

tcp_v4_do_rcv

0条评论
0 / 1000
郑****勇
4文章数
0粉丝数
郑****勇
4 文章 | 0 粉丝
郑****勇
4文章数
0粉丝数
郑****勇
4 文章 | 0 粉丝
原创

sk的锁

2024-11-26 09:11:20
2
0

1、发包流程(设置sk_lock.owned1,但不占用spinlock锁)

tcp_sendmsg

lock_sock

lock_sock_nested

2收包流程(占用spinlock锁)

1)、如果sk_lock.owned1,说明当前sk正在发包,因此需要延迟收包,先将报文放到backlog里,等发包结束后,再去收包;

2)、如果sk_lock.owned0,说明当前sk没有子在发包,可以正常收包,因此直接通过tcp_v4_do_rcv接收报文,整个接收过程占用spinlock锁,发包流程被阻塞。

 

3backlog流程(不占用spinlock锁,sk_lock.owned1

当发包流程结束后,会通过release_sock去处理之前保存在backlog里的还没来的及处理的接收报文。

tcp_sendmsg

release_sock

__release_sock

sk_backlog_rcv

tcp_v4_do_rcv

文章来自个人专栏
内核 && 网络
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0