Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tools
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Repository analytics
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
CodeLinaro
public-release-test-restored
platform
vendor
qcom-opensource
tools
Commits
f23c453e
Commit
f23c453e
authored
6 years ago
by
Linux Build Service Account
Committed by
Gerrit - the friendly Code Review server
6 years ago
Browse files
Options
Downloads
Plain Diff
Merge "lrdp_V2 : Fix for broken ion_buffer_parse.py"
parents
e52296aa
c0760289
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
linux-ramdump-parser-v2/parsers/ion_buffer_parse.py
+30
-0
30 additions, 0 deletions
linux-ramdump-parser-v2/parsers/ion_buffer_parse.py
with
30 additions
and
0 deletions
linux-ramdump-parser-v2/parsers/ion_buffer_parse.py
+
30
−
0
View file @
f23c453e
...
...
@@ -28,6 +28,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
from
parser_util
import
register_parser
,
RamParser
from
print_out
import
print_out_str
from
rb_tree
import
RbTree
import
logging
import
os
...
...
@@ -56,6 +57,8 @@ def ion_buffer_info(self, ramdump, ion_info):
ion_info
.
write
(
"
*****Parsing dma buf info for ion leak debugging*****
\n\n
"
)
head_offset
=
ramdump
.
field_offset
(
'
struct dma_buf_list
'
,
'
head
'
)
head
=
ramdump
.
read_word
(
db_list
+
head_offset
)
next_offset
=
ramdump
.
field_offset
(
'
struct list_head
'
,
'
next
'
)
prev_offset
=
ramdump
.
field_offset
(
'
struct list_head
'
,
'
prev
'
)
list_node_offset
=
ramdump
.
field_offset
(
'
struct dma_buf
'
,
'
list_node
'
)
size_offset
=
ramdump
.
field_offset
(
'
struct dma_buf
'
,
'
size
'
)
file_offset
=
ramdump
.
field_offset
(
'
struct dma_buf
'
,
'
file
'
)
...
...
@@ -74,6 +77,25 @@ def ion_buffer_info(self, ramdump, ion_info):
exp_name
=
ramdump
.
read_cstring
(
exp_name
,
48
)
dma_buf_info
.
append
([
file
,
name
,
hex
(
size
),
bytes_to_KB
(
size
)])
head
=
ramdump
.
read_word
(
head
)
next_node
=
ramdump
.
read_word
(
head
+
next_offset
)
if
next_node
==
0
:
print_out_str
(
"
db_list is corrupted!
\n
Complete ion buffer
"
"
ionformation may not be available
"
)
head
=
ramdump
.
read_word
(
db_list
+
head_offset
+
prev_offset
)
while
(
head
!=
db_list
):
dma_buf_addr
=
head
-
list_node_offset
size
=
ramdump
.
read_word
(
dma_buf_addr
+
size_offset
)
file
=
ramdump
.
read_word
(
dma_buf_addr
+
file_offset
)
exp_name
=
ramdump
.
read_word
(
dma_buf_addr
+
exp_name_offset
)
name
=
ramdump
.
read_word
(
dma_buf_addr
+
name_offset
)
name
=
ramdump
.
read_cstring
(
name
,
48
)
exp_name
=
ramdump
.
read_cstring
(
exp_name
,
48
)
dma_buf_info
.
append
([
file
,
name
,
hex
(
size
),
bytes_to_KB
(
size
)])
head
=
ramdump
.
read_word
(
head
+
prev_offset
)
prev_node
=
ramdump
.
read_word
(
head
+
prev_offset
)
if
prev_node
==
0
:
break
break
dma_buf_info
=
sorted
(
dma_buf_info
,
key
=
lambda
l
:
l
[
3
],
reverse
=
True
)
for
item
in
dma_buf_info
:
...
...
@@ -144,11 +166,15 @@ def get_bufs(task, bufs, ion_info, ramdump):
def
get_proc_bufs
(
task
,
bufs
,
ion_info
,
ramdump
):
group_offset
=
ramdump
.
field_offset
(
'
struct task_struct
'
,
'
thread_group
'
)
group_node
=
ramdump
.
read_word
(
task
+
group_offset
)
offset_signal
=
ramdump
.
field_offset
(
'
struct task_struct
'
,
'
signal
'
)
size
=
0
;
curr
=
None
while
curr
!=
task
:
group_node
=
ramdump
.
read_pointer
(
group_node
)
curr
=
group_node
-
group_offset
signal_struct
=
ramdump
.
read_word
(
curr
+
offset_signal
)
if
signal_struct
==
0
or
signal_struct
is
None
:
break
size
+=
get_bufs
(
curr
,
bufs
,
ion_info
,
ramdump
)
return
size
...
...
@@ -161,6 +187,7 @@ def ion_proc_info(self, ramdump, ion_info):
return
ion_info
.
write
(
"
*****Parsing dma proc info for ion leak debugging*****
\n
"
)
node_offset
=
ramdump
.
field_offset
(
'
struct task_struct
'
,
'
tasks
'
)
offset_signal
=
ramdump
.
field_offset
(
'
struct task_struct
'
,
'
signal
'
)
list_node
=
ramdump
.
read_word
(
init_task
+
node_offset
)
task
=
None
pid_offset
=
ramdump
.
field_offset
(
'
struct task_struct
'
,
'
tgid
'
)
...
...
@@ -169,6 +196,9 @@ def ion_proc_info(self, ramdump, ion_info):
while
(
task
!=
init_task
):
list_node
=
ramdump
.
read_pointer
(
list_node
)
task
=
list_node
-
node_offset
signal_struct
=
ramdump
.
read_word
(
task
+
offset_signal
)
if
signal_struct
==
0
or
signal_struct
is
None
:
break
bufs
=
[]
size
=
get_proc_bufs
(
task
,
bufs
,
ion_info
,
ramdump
)
if
(
size
==
0
):
...
...
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