Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
0feab753
Commit
0feab753
authored
Oct 28, 2020
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix coding errors and minor changes
parent
d0b6318b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
25 deletions
+24
-25
getinfo.cpp
native/jni/init/getinfo.cpp
+11
-10
mount.cpp
native/jni/init/mount.cpp
+13
-15
No files found.
native/jni/init/getinfo.cpp
View file @
0feab753
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
using
namespace
std
;
using
namespace
std
;
template
<
typename
Func
>
template
<
typename
Func
>
static
void
parse_cmdline
(
Func
fn
)
{
static
void
parse_cmdline
(
const
Func
&
fn
)
{
char
cmdline
[
4096
];
char
cmdline
[
4096
];
int
fd
=
xopen
(
"/proc/cmdline"
,
O_RDONLY
|
O_CLOEXEC
);
int
fd
=
xopen
(
"/proc/cmdline"
,
O_RDONLY
|
O_CLOEXEC
);
cmdline
[
read
(
fd
,
cmdline
,
sizeof
(
cmdline
))]
=
'\0'
;
cmdline
[
read
(
fd
,
cmdline
,
sizeof
(
cmdline
))]
=
'\0'
;
...
@@ -140,7 +140,7 @@ void load_kernel_info(cmdline *cmd) {
...
@@ -140,7 +140,7 @@ void load_kernel_info(cmdline *cmd) {
// Log to kernel
// Log to kernel
setup_klog
();
setup_klog
();
parse_cmdline
([
=
](
auto
key
,
auto
value
)
->
void
{
parse_cmdline
([
=
](
string_view
key
,
const
char
*
value
)
->
void
{
if
(
key
==
"androidboot.slot_suffix"
)
{
if
(
key
==
"androidboot.slot_suffix"
)
{
strcpy
(
cmd
->
slot
,
value
);
strcpy
(
cmd
->
slot
,
value
);
}
else
if
(
key
==
"androidboot.slot"
)
{
}
else
if
(
key
==
"androidboot.slot"
)
{
...
@@ -161,6 +161,15 @@ void load_kernel_info(cmdline *cmd) {
...
@@ -161,6 +161,15 @@ void load_kernel_info(cmdline *cmd) {
}
}
});
});
LOGD
(
"Device info:
\n
"
);
LOGD
(
"skip_initramfs=[%d]
\n
"
,
cmd
->
skip_initramfs
);
LOGD
(
"force_normal_boot=[%d]
\n
"
,
cmd
->
force_normal_boot
);
LOGD
(
"slot=[%s]
\n
"
,
cmd
->
slot
);
LOGD
(
"dt_dir=[%s]
\n
"
,
cmd
->
dt_dir
);
LOGD
(
"fstab_suffix=[%s]
\n
"
,
cmd
->
fstab_suffix
);
LOGD
(
"hardware=[%s]
\n
"
,
cmd
->
hardware
);
LOGD
(
"hardware.platform=[%s]
\n
"
,
cmd
->
hardware_plat
);
parse_prop_file
(
"/.backup/.magisk"
,
[
=
](
auto
key
,
auto
value
)
->
bool
{
parse_prop_file
(
"/.backup/.magisk"
,
[
=
](
auto
key
,
auto
value
)
->
bool
{
if
(
key
==
"RECOVERYMODE"
&&
value
==
"true"
)
{
if
(
key
==
"RECOVERYMODE"
&&
value
==
"true"
)
{
LOGD
(
"Running in recovery mode, waiting for key...
\n
"
);
LOGD
(
"Running in recovery mode, waiting for key...
\n
"
);
...
@@ -172,14 +181,6 @@ void load_kernel_info(cmdline *cmd) {
...
@@ -172,14 +181,6 @@ void load_kernel_info(cmdline *cmd) {
if
(
cmd
->
dt_dir
[
0
]
==
'\0'
)
if
(
cmd
->
dt_dir
[
0
]
==
'\0'
)
strcpy
(
cmd
->
dt_dir
,
DEFAULT_DT_DIR
);
strcpy
(
cmd
->
dt_dir
,
DEFAULT_DT_DIR
);
LOGD
(
"Device info:
\n
"
);
LOGD
(
"skip_initramfs=[%d]
\n
"
,
cmd
->
skip_initramfs
);
LOGD
(
"force_normal_boot=[%d]
\n
"
,
cmd
->
force_normal_boot
);
LOGD
(
"slot=[%s]
\n
"
,
cmd
->
slot
);
LOGD
(
"dt_dir=[%s]
\n
"
,
cmd
->
dt_dir
);
LOGD
(
"hardware=[%s]
\n
"
,
cmd
->
hardware
);
LOGD
(
"hardware.platform=[%s]
\n
"
,
cmd
->
hardware_plat
);
}
}
bool
check_two_stage
()
{
bool
check_two_stage
()
{
...
...
native/jni/init/mount.cpp
View file @
0feab753
...
@@ -54,11 +54,10 @@ static void collect_devices() {
...
@@ -54,11 +54,10 @@ static void collect_devices() {
continue
;
continue
;
sprintf
(
path
,
"/sys/dev/block/%s/uevent"
,
entry
->
d_name
);
sprintf
(
path
,
"/sys/dev/block/%s/uevent"
,
entry
->
d_name
);
parse_device
(
&
dev
,
path
);
parse_device
(
&
dev
,
path
);
dev
.
dmname
[
0
]
=
'\0'
;
sprintf
(
path
,
"/sys/dev/block/%s/dm/name"
,
entry
->
d_name
);
sprintf
(
path
,
"/sys/dev/block/%s/dm/name"
,
entry
->
d_name
);
if
(
access
(
path
,
F_OK
)
==
0
)
{
if
(
access
(
path
,
F_OK
)
==
0
)
{
auto
name
=
rtrim
(
full_read
(
path
));
auto
name
=
rtrim
(
full_read
(
path
));
strcpy
(
dev
.
dmname
,
name
.
c_str
());
strcpy
(
dev
.
dmname
,
name
.
data
());
}
}
dev_list
.
push_back
(
dev
);
dev_list
.
push_back
(
dev
);
}
}
...
@@ -70,7 +69,7 @@ static struct {
...
@@ -70,7 +69,7 @@ static struct {
char
block_dev
[
64
];
char
block_dev
[
64
];
}
blk_info
;
}
blk_info
;
static
int64_t
setup_block
(
bool
write_block
=
true
)
{
static
int64_t
setup_block
(
bool
write_block
)
{
if
(
dev_list
.
empty
())
if
(
dev_list
.
empty
())
collect_devices
();
collect_devices
();
xmkdir
(
"/dev"
,
0755
);
xmkdir
(
"/dev"
,
0755
);
...
@@ -78,20 +77,19 @@ static int64_t setup_block(bool write_block = true) {
...
@@ -78,20 +77,19 @@ static int64_t setup_block(bool write_block = true) {
for
(
int
tries
=
0
;
tries
<
3
;
++
tries
)
{
for
(
int
tries
=
0
;
tries
<
3
;
++
tries
)
{
for
(
auto
&
dev
:
dev_list
)
{
for
(
auto
&
dev
:
dev_list
)
{
if
(
strcasecmp
(
dev
.
partname
,
blk_info
.
partname
)
==
0
)
{
if
(
strcasecmp
(
dev
.
partname
,
blk_info
.
partname
)
==
0
)
if
(
write_block
)
{
sprintf
(
blk_info
.
block_dev
,
"/dev/block/%s"
,
dev
.
devname
);
}
LOGD
(
"Setup %s: [%s] (%d, %d)
\n
"
,
dev
.
partname
,
dev
.
devname
,
dev
.
major
,
dev
.
minor
);
LOGD
(
"Setup %s: [%s] (%d, %d)
\n
"
,
dev
.
partname
,
dev
.
devname
,
dev
.
major
,
dev
.
minor
);
dev_t
rdev
=
makedev
(
dev
.
major
,
dev
.
minor
);
else
if
(
strcasecmp
(
dev
.
dmname
,
blk_info
.
partname
)
==
0
)
mknod
(
blk_info
.
block_dev
,
S_IFBLK
|
0600
,
rdev
);
return
rdev
;
}
else
if
(
strcasecmp
(
dev
.
dmname
,
blk_info
.
partname
)
==
0
)
{
LOGD
(
"Setup %s: [%s] (%d, %d)
\n
"
,
dev
.
dmname
,
dev
.
devname
,
dev
.
major
,
dev
.
minor
);
LOGD
(
"Setup %s: [%s] (%d, %d)
\n
"
,
dev
.
dmname
,
dev
.
devname
,
dev
.
major
,
dev
.
minor
);
dev_t
rdev
=
makedev
(
dev
.
major
,
dev
.
minor
);
else
mknod
(
blk_info
.
block_dev
,
S_IFBLK
|
0600
,
rdev
);
continue
;
return
rdev
;
if
(
write_block
)
{
sprintf
(
blk_info
.
block_dev
,
"/dev/block/%s"
,
dev
.
devname
);
}
}
dev_t
rdev
=
makedev
(
dev
.
major
,
dev
.
minor
);
mknod
(
blk_info
.
block_dev
,
S_IFBLK
|
0600
,
rdev
);
return
rdev
;
}
}
// Wait 10ms and try again
// Wait 10ms and try again
usleep
(
10000
);
usleep
(
10000
);
...
@@ -171,7 +169,7 @@ void MagiskInit::mount_with_dt() {
...
@@ -171,7 +169,7 @@ void MagiskInit::mount_with_dt() {
continue
;
continue
;
// Derive partname from dev
// Derive partname from dev
sprintf
(
blk_info
.
partname
,
"%s%s"
,
basename
(
entry
.
dev
.
data
()),
cmd
->
slot
);
sprintf
(
blk_info
.
partname
,
"%s%s"
,
basename
(
entry
.
dev
.
data
()),
cmd
->
slot
);
setup_block
();
setup_block
(
true
);
xmkdir
(
entry
.
mnt_point
.
data
(),
0755
);
xmkdir
(
entry
.
mnt_point
.
data
(),
0755
);
xmount
(
blk_info
.
block_dev
,
entry
.
mnt_point
.
data
(),
entry
.
type
.
data
(),
MS_RDONLY
,
nullptr
);
xmount
(
blk_info
.
block_dev
,
entry
.
mnt_point
.
data
(),
entry
.
type
.
data
(),
MS_RDONLY
,
nullptr
);
mount_list
.
push_back
(
entry
.
mnt_point
);
mount_list
.
push_back
(
entry
.
mnt_point
);
...
...
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