ファイル
android_kernel_samsung_sm86…/scripts/sec_reorder.pl
2025-02-18 16:35:45 +09:00

109 行
2.0 KiB
Perl
実行ファイル

#!/bin/perl
# SPDX-License-Identifier: GPL-2.0
# COPYRIGHT(C) 2023 Samsung Electronics Co., Ltd. All Right Reserved.
# NOTE: 'androidboot.load_modules_parallel=false' is required
use strict;
my @__highest = (
'drivers/samsung/debug/boot_stat/',
'drivers/samsung/debug/log_buf/',
'drivers/samsung/debug/arm64/ap_context/',
);
my @__lowest = (
'drivers/samsung/bsp/qcom/param/',
'drivers/samsung/debug/qcom/dbg_partition/',
);
my %highest = map { $_ => [] } @__highest if $#__highest >= 0;
my %lowest = map { $_ => [] } @__lowest if $#__lowest >= 0;
my @modules;
reorder_main();
sub reorder_main
{
my $fd;
my $dot_ko;
my $collected;
open($fd, $ARGV[0]);
while (<$fd>) {
$dot_ko = $_;
$dot_ko =~ s/\s*$//;
$collected = __collect_highest($dot_ko);
$collected += __collect_lowest($dot_ko);
if ($collected == 0) {
push(@modules, $dot_ko);
}
}
close($fd);
__print_highest();
__print_modules();
__print_lowest();
}
sub __collect_highest
{
my $_dot_ko = $_[0];
my $path;
foreach $path (@__highest) {
if ($_dot_ko =~ /^kernel\/\Q$path\E/) {
push(@{$highest{$path}}, $_dot_ko);
return 1;
}
}
return 0;
}
sub __collect_lowest
{
my $_dot_ko = $_[0];
my $path;
foreach $path (@__lowest) {
if ($_dot_ko =~ /^kernel\/\Q$path\E/) {
push(@{$lowest{$path}}, $_dot_ko);
return 1;
}
}
return 0;
}
sub __print_highest
{
my ($path, $dot_ko);
foreach $path (@__highest) {
foreach $dot_ko (@{$highest{$path}}) {
printf("%s\n", $dot_ko);
}
}
}
sub __print_modules
{
my $dot_ko;
foreach $dot_ko (@modules) {
printf("%s\n", $dot_ko);
}
}
sub __print_lowest
{
my ($path, $dot_ko);
foreach $path (@__lowest) {
foreach $dot_ko (@{$lowest{$path}}) {
printf("%s\n", $dot_ko);
}
}
}