Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
6b3a8bbf
cloud-kernel
项目概览
openanolis
/
cloud-kernel
接近 2 年 前同步成功
通知
169
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6b3a8bbf
编写于
3月 31, 2013
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
aic7xxx: switch to ->show_info()
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
f6f83a6c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
48 addition
and
126 deletion
+48
-126
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
+2
-7
drivers/scsi/aic7xxx/aic7xxx_osm.h
drivers/scsi/aic7xxx/aic7xxx_osm.h
+2
-10
drivers/scsi/aic7xxx/aic7xxx_proc.c
drivers/scsi/aic7xxx/aic7xxx_proc.c
+44
-109
未找到文件。
drivers/scsi/aic7xxx/aic7xxx_osm.c
浏览文件 @
6b3a8bbf
...
...
@@ -803,7 +803,8 @@ struct scsi_host_template aic7xxx_driver_template = {
.
module
=
THIS_MODULE
,
.
name
=
"aic7xxx"
,
.
proc_name
=
"aic7xxx"
,
.
proc_info
=
ahc_linux_proc_info
,
.
show_info
=
ahc_linux_show_info
,
.
write_info
=
ahc_proc_write_seeprom
,
.
info
=
ahc_linux_info
,
.
queuecommand
=
ahc_linux_queue
,
.
eh_abort_handler
=
ahc_linux_abort
,
...
...
@@ -1631,10 +1632,8 @@ ahc_send_async(struct ahc_softc *ahc, char channel,
switch
(
code
)
{
case
AC_TRANSFER_NEG
:
{
char
buf
[
80
];
struct
scsi_target
*
starget
;
struct
ahc_linux_target
*
targ
;
struct
info_str
info
;
struct
ahc_initiator_tinfo
*
tinfo
;
struct
ahc_tmode_tstate
*
tstate
;
int
target_offset
;
...
...
@@ -1642,10 +1641,6 @@ ahc_send_async(struct ahc_softc *ahc, char channel,
BUG_ON
(
target
==
CAM_TARGET_WILDCARD
);
info
.
buffer
=
buf
;
info
.
length
=
sizeof
(
buf
);
info
.
offset
=
0
;
info
.
pos
=
0
;
tinfo
=
ahc_fetch_transinfo
(
ahc
,
channel
,
channel
==
'A'
?
ahc
->
our_id
:
ahc
->
our_id_b
,
...
...
drivers/scsi/aic7xxx/aic7xxx_osm.h
浏览文件 @
6b3a8bbf
...
...
@@ -383,14 +383,6 @@ void ahc_insb(struct ahc_softc * ahc, long port,
int
ahc_linux_register_host
(
struct
ahc_softc
*
,
struct
scsi_host_template
*
);
/*************************** Pretty Printing **********************************/
struct
info_str
{
char
*
buffer
;
int
length
;
off_t
offset
;
int
pos
;
};
/******************************** Locking *************************************/
/* Lock protecting internal data structures */
...
...
@@ -523,8 +515,8 @@ ahc_flush_device_writes(struct ahc_softc *ahc)
}
/**************************** Proc FS Support *********************************/
int
ahc_
linux_proc_info
(
struct
Scsi_Host
*
,
char
*
,
char
**
,
off_t
,
int
,
int
);
int
ahc_
proc_write_seeprom
(
struct
Scsi_Host
*
,
char
*
,
int
);
int
ahc_linux_show_info
(
struct
seq_file
*
,
struct
Scsi_Host
*
);
/*************************** Domain Validation ********************************/
/*********************** Transaction Access Wrappers *************************/
...
...
drivers/scsi/aic7xxx/aic7xxx_proc.c
浏览文件 @
6b3a8bbf
...
...
@@ -43,16 +43,12 @@
#include "aic7xxx_inline.h"
#include "aic7xxx_93cx6.h"
static
void
copy_mem_info
(
struct
info_str
*
info
,
char
*
data
,
int
len
);
static
int
copy_info
(
struct
info_str
*
info
,
char
*
fmt
,
...);
static
void
ahc_dump_target_state
(
struct
ahc_softc
*
ahc
,
struct
info_str
*
info
,
struct
seq_file
*
m
,
u_int
our_id
,
char
channel
,
u_int
target_id
,
u_int
target_offset
);
static
void
ahc_dump_device_state
(
struct
info_str
*
info
,
static
void
ahc_dump_device_state
(
struct
seq_file
*
m
,
struct
scsi_device
*
dev
);
static
int
ahc_proc_write_seeprom
(
struct
ahc_softc
*
ahc
,
char
*
buffer
,
int
length
);
/*
* Table of syncrates that don't follow the "divisible by 4"
...
...
@@ -94,51 +90,8 @@ ahc_calc_syncsrate(u_int period_factor)
return
(
10000000
/
(
period_factor
*
4
*
10
));
}
static
void
copy_mem_info
(
struct
info_str
*
info
,
char
*
data
,
int
len
)
{
if
(
info
->
pos
+
len
>
info
->
offset
+
info
->
length
)
len
=
info
->
offset
+
info
->
length
-
info
->
pos
;
if
(
info
->
pos
+
len
<
info
->
offset
)
{
info
->
pos
+=
len
;
return
;
}
if
(
info
->
pos
<
info
->
offset
)
{
off_t
partial
;
partial
=
info
->
offset
-
info
->
pos
;
data
+=
partial
;
info
->
pos
+=
partial
;
len
-=
partial
;
}
if
(
len
>
0
)
{
memcpy
(
info
->
buffer
,
data
,
len
);
info
->
pos
+=
len
;
info
->
buffer
+=
len
;
}
}
static
int
copy_info
(
struct
info_str
*
info
,
char
*
fmt
,
...)
{
va_list
args
;
char
buf
[
256
];
int
len
;
va_start
(
args
,
fmt
);
len
=
vsprintf
(
buf
,
fmt
,
args
);
va_end
(
args
);
copy_mem_info
(
info
,
buf
,
len
);
return
(
len
);
}
static
void
ahc_format_transinfo
(
struct
info_str
*
info
,
struct
ahc_transinfo
*
tinfo
)
ahc_format_transinfo
(
struct
seq_file
*
m
,
struct
ahc_transinfo
*
tinfo
)
{
u_int
speed
;
u_int
freq
;
...
...
@@ -153,12 +106,12 @@ ahc_format_transinfo(struct info_str *info, struct ahc_transinfo *tinfo)
speed
*=
(
0x01
<<
tinfo
->
width
);
mb
=
speed
/
1000
;
if
(
mb
>
0
)
copy_info
(
info
,
"%d.%03dMB/s transfers"
,
mb
,
speed
%
1000
);
seq_printf
(
m
,
"%d.%03dMB/s transfers"
,
mb
,
speed
%
1000
);
else
copy_info
(
info
,
"%dKB/s transfers"
,
speed
);
seq_printf
(
m
,
"%dKB/s transfers"
,
speed
);
if
(
freq
!=
0
)
{
copy_info
(
info
,
" (%d.%03dMHz%s, offset %d"
,
seq_printf
(
m
,
" (%d.%03dMHz%s, offset %d"
,
freq
/
1000
,
freq
%
1000
,
(
tinfo
->
ppr_options
&
MSG_EXT_PPR_DT_REQ
)
!=
0
?
" DT"
:
""
,
tinfo
->
offset
);
...
...
@@ -166,19 +119,19 @@ ahc_format_transinfo(struct info_str *info, struct ahc_transinfo *tinfo)
if
(
tinfo
->
width
>
0
)
{
if
(
freq
!=
0
)
{
copy_info
(
info
,
", "
);
seq_printf
(
m
,
", "
);
}
else
{
copy_info
(
info
,
" ("
);
seq_printf
(
m
,
" ("
);
}
copy_info
(
info
,
"%dbit)"
,
8
*
(
0x01
<<
tinfo
->
width
));
seq_printf
(
m
,
"%dbit)"
,
8
*
(
0x01
<<
tinfo
->
width
));
}
else
if
(
freq
!=
0
)
{
copy_info
(
info
,
")"
);
seq_printf
(
m
,
")"
);
}
copy_info
(
info
,
"
\n
"
);
seq_printf
(
m
,
"
\n
"
);
}
static
void
ahc_dump_target_state
(
struct
ahc_softc
*
ahc
,
struct
info_str
*
info
,
ahc_dump_target_state
(
struct
ahc_softc
*
ahc
,
struct
seq_file
*
m
,
u_int
our_id
,
char
channel
,
u_int
target_id
,
u_int
target_offset
)
{
...
...
@@ -190,18 +143,18 @@ ahc_dump_target_state(struct ahc_softc *ahc, struct info_str *info,
tinfo
=
ahc_fetch_transinfo
(
ahc
,
channel
,
our_id
,
target_id
,
&
tstate
);
if
((
ahc
->
features
&
AHC_TWIN
)
!=
0
)
copy_info
(
info
,
"Channel %c "
,
channel
);
copy_info
(
info
,
"Target %d Negotiation Settings
\n
"
,
target_id
);
copy_info
(
info
,
"
\t
User: "
);
ahc_format_transinfo
(
info
,
&
tinfo
->
user
);
seq_printf
(
m
,
"Channel %c "
,
channel
);
seq_printf
(
m
,
"Target %d Negotiation Settings
\n
"
,
target_id
);
seq_printf
(
m
,
"
\t
User: "
);
ahc_format_transinfo
(
m
,
&
tinfo
->
user
);
starget
=
ahc
->
platform_data
->
starget
[
target_offset
];
if
(
!
starget
)
return
;
copy_info
(
info
,
"
\t
Goal: "
);
ahc_format_transinfo
(
info
,
&
tinfo
->
goal
);
copy_info
(
info
,
"
\t
Curr: "
);
ahc_format_transinfo
(
info
,
&
tinfo
->
curr
);
seq_printf
(
m
,
"
\t
Goal: "
);
ahc_format_transinfo
(
m
,
&
tinfo
->
goal
);
seq_printf
(
m
,
"
\t
Curr: "
);
ahc_format_transinfo
(
m
,
&
tinfo
->
curr
);
for
(
lun
=
0
;
lun
<
AHC_NUM_LUNS
;
lun
++
)
{
struct
scsi_device
*
sdev
;
...
...
@@ -211,29 +164,30 @@ ahc_dump_target_state(struct ahc_softc *ahc, struct info_str *info,
if
(
sdev
==
NULL
)
continue
;
ahc_dump_device_state
(
info
,
sdev
);
ahc_dump_device_state
(
m
,
sdev
);
}
}
static
void
ahc_dump_device_state
(
struct
info_str
*
info
,
struct
scsi_device
*
sdev
)
ahc_dump_device_state
(
struct
seq_file
*
m
,
struct
scsi_device
*
sdev
)
{
struct
ahc_linux_device
*
dev
=
scsi_transport_device_data
(
sdev
);
copy_info
(
info
,
"
\t
Channel %c Target %d Lun %d Settings
\n
"
,
seq_printf
(
m
,
"
\t
Channel %c Target %d Lun %d Settings
\n
"
,
sdev
->
sdev_target
->
channel
+
'A'
,
sdev
->
sdev_target
->
id
,
sdev
->
lun
);
copy_info
(
info
,
"
\t\t
Commands Queued %ld
\n
"
,
dev
->
commands_issued
);
copy_info
(
info
,
"
\t\t
Commands Active %d
\n
"
,
dev
->
active
);
copy_info
(
info
,
"
\t\t
Command Openings %d
\n
"
,
dev
->
openings
);
copy_info
(
info
,
"
\t\t
Max Tagged Openings %d
\n
"
,
dev
->
maxtags
);
copy_info
(
info
,
"
\t\t
Device Queue Frozen Count %d
\n
"
,
dev
->
qfrozen
);
seq_printf
(
m
,
"
\t\t
Commands Queued %ld
\n
"
,
dev
->
commands_issued
);
seq_printf
(
m
,
"
\t\t
Commands Active %d
\n
"
,
dev
->
active
);
seq_printf
(
m
,
"
\t\t
Command Openings %d
\n
"
,
dev
->
openings
);
seq_printf
(
m
,
"
\t\t
Max Tagged Openings %d
\n
"
,
dev
->
maxtags
);
seq_printf
(
m
,
"
\t\t
Device Queue Frozen Count %d
\n
"
,
dev
->
qfrozen
);
}
static
int
ahc_proc_write_seeprom
(
struct
ahc_softc
*
ahc
,
char
*
buffer
,
int
length
)
int
ahc_proc_write_seeprom
(
struct
Scsi_Host
*
shost
,
char
*
buffer
,
int
length
)
{
struct
ahc_softc
*
ahc
=
*
(
struct
ahc_softc
**
)
shost
->
hostdata
;
struct
seeprom_descriptor
sd
;
int
have_seeprom
;
u_long
s
;
...
...
@@ -332,53 +286,36 @@ ahc_proc_write_seeprom(struct ahc_softc *ahc, char *buffer, int length)
* Return information to handle /proc support for the driver.
*/
int
ahc_linux_proc_info
(
struct
Scsi_Host
*
shost
,
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
,
int
inout
)
ahc_linux_show_info
(
struct
seq_file
*
m
,
struct
Scsi_Host
*
shost
)
{
struct
ahc_softc
*
ahc
=
*
(
struct
ahc_softc
**
)
shost
->
hostdata
;
struct
info_str
info
;
char
ahc_info
[
256
];
u_int
max_targ
;
u_int
i
;
int
retval
;
/* Has data been written to the file? */
if
(
inout
==
TRUE
)
{
retval
=
ahc_proc_write_seeprom
(
ahc
,
buffer
,
length
);
goto
done
;
}
if
(
start
)
*
start
=
buffer
;
info
.
buffer
=
buffer
;
info
.
length
=
length
;
info
.
offset
=
offset
;
info
.
pos
=
0
;
copy_info
(
&
info
,
"Adaptec AIC7xxx driver version: %s
\n
"
,
seq_printf
(
m
,
"Adaptec AIC7xxx driver version: %s
\n
"
,
AIC7XXX_DRIVER_VERSION
);
copy_info
(
&
info
,
"%s
\n
"
,
ahc
->
description
);
seq_printf
(
m
,
"%s
\n
"
,
ahc
->
description
);
ahc_controller_info
(
ahc
,
ahc_info
);
copy_info
(
&
info
,
"%s
\n
"
,
ahc_info
);
copy_info
(
&
info
,
"Allocated SCBs: %d, SG List Length: %d
\n\n
"
,
seq_printf
(
m
,
"%s
\n
"
,
ahc_info
);
seq_printf
(
m
,
"Allocated SCBs: %d, SG List Length: %d
\n\n
"
,
ahc
->
scb_data
->
numscbs
,
AHC_NSEG
);
if
(
ahc
->
seep_config
==
NULL
)
copy_info
(
&
info
,
"No Serial EEPROM
\n
"
);
seq_printf
(
m
,
"No Serial EEPROM
\n
"
);
else
{
copy_info
(
&
info
,
"Serial EEPROM:
\n
"
);
seq_printf
(
m
,
"Serial EEPROM:
\n
"
);
for
(
i
=
0
;
i
<
sizeof
(
*
ahc
->
seep_config
)
/
2
;
i
++
)
{
if
(((
i
%
8
)
==
0
)
&&
(
i
!=
0
))
{
copy_info
(
&
info
,
"
\n
"
);
seq_printf
(
m
,
"
\n
"
);
}
copy_info
(
&
info
,
"0x%.4x "
,
seq_printf
(
m
,
"0x%.4x "
,
((
uint16_t
*
)
ahc
->
seep_config
)[
i
]);
}
copy_info
(
&
info
,
"
\n
"
);
seq_printf
(
m
,
"
\n
"
);
}
copy_info
(
&
info
,
"
\n
"
);
seq_printf
(
m
,
"
\n
"
);
max_targ
=
16
;
if
((
ahc
->
features
&
(
AHC_WIDE
|
AHC_TWIN
))
==
0
)
...
...
@@ -398,10 +335,8 @@ ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
target_id
=
i
%
8
;
}
ahc_dump_target_state
(
ahc
,
&
info
,
our_id
,
ahc_dump_target_state
(
ahc
,
m
,
our_id
,
channel
,
target_id
,
i
);
}
retval
=
info
.
pos
>
info
.
offset
?
info
.
pos
-
info
.
offset
:
0
;
done:
return
(
retval
);
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录