Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mirror_resources
Qemu
提交
7b5a44c5
Q
Qemu
项目概览
mirror_resources
/
Qemu
12 个月 前同步成功
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
Qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7b5a44c5
编写于
12月 15, 2010
作者:
G
Gerd Hoffmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
uhci: keep uhci state pointer in async packet struct.
Signed-off-by:
N
Gerd Hoffmann
<
kraxel@redhat.com
>
上级
ddf6583f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
4 deletion
+8
-4
hw/usb-uhci.c
hw/usb-uhci.c
+8
-4
未找到文件。
hw/usb-uhci.c
浏览文件 @
7b5a44c5
...
...
@@ -106,6 +106,8 @@ static void dump_data(const uint8_t *data, int len)
static
void
dump_data
(
const
uint8_t
*
data
,
int
len
)
{}
#endif
typedef
struct
UHCIState
UHCIState
;
/*
* Pending async transaction.
* 'packet' must be the first field because completion
...
...
@@ -113,6 +115,7 @@ static void dump_data(const uint8_t *data, int len) {}
*/
typedef
struct
UHCIAsync
{
USBPacket
packet
;
UHCIState
*
uhci
;
QTAILQ_ENTRY
(
UHCIAsync
)
next
;
uint32_t
td
;
uint32_t
token
;
...
...
@@ -127,7 +130,7 @@ typedef struct UHCIPort {
uint16_t
ctrl
;
}
UHCIPort
;
typedef
struct
UHCIState
{
struct
UHCIState
{
PCIDevice
dev
;
USBBus
bus
;
uint16_t
cmd
;
/* cmd register */
...
...
@@ -147,7 +150,7 @@ typedef struct UHCIState {
/* Active packets */
QTAILQ_HEAD
(,
UHCIAsync
)
async_pending
;
uint8_t
num_ports_vmstate
;
}
UHCIState
;
};
typedef
struct
UHCI_TD
{
uint32_t
link
;
...
...
@@ -166,6 +169,7 @@ static UHCIAsync *uhci_async_alloc(UHCIState *s)
UHCIAsync
*
async
=
qemu_malloc
(
sizeof
(
UHCIAsync
));
memset
(
&
async
->
packet
,
0
,
sizeof
(
async
->
packet
));
async
->
uhci
=
s
;
async
->
valid
=
0
;
async
->
td
=
0
;
async
->
token
=
0
;
...
...
@@ -830,8 +834,8 @@ done:
static
void
uhci_async_complete
(
USBPacket
*
packet
,
void
*
opaque
)
{
UHCI
State
*
s
=
opaque
;
UHCI
Async
*
async
=
(
UHCIAsync
*
)
packet
;
UHCI
Async
*
async
=
container_of
(
packet
,
UHCIAsync
,
packet
)
;
UHCI
State
*
s
=
async
->
uhci
;
DPRINTF
(
"uhci: async complete. td 0x%x token 0x%x
\n
"
,
async
->
td
,
async
->
token
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录