书架(shelf.c)从 M6.40 首版起就**没有**滚动输入通路,不是 M32/M33 的回归:
1) app_on_touch_down/move 只路由给阅读页 → 书架没有跟手拖动;
2) shelf_on_swipe 用 dy 去 scroll_by,而 SDK 固定按 on_swipe(dir, dist, 0)
分发(总位移在第 2 参 dx,dy 恒 0)→ 恒 scroll_by(0),死代码。
两条都在 shelf.c 自己身上,list/grid × format/folder 共用同一段,所以四种组合
全都「滑不动」(files/ncm 能滑是因为它们各自实现了 touch_down/move → scroll_by)。
修复:
- app.c:touch down/move 也路由给书架(阅读页优先级不变)。
- shelf.c:
* 新增 shelf_on_touch_down/move 跟手拖动:按下点在内容区才起手;纵向主导(≥4px)
才锁滚动,横向主导直接取消(不抢左缘返回);逐帧 scroll_by(-dy) 只重画内容区。
* shelf_on_swipe 改按 dist(=dx,兼容 dy 分支)+ 方向定符号;本次手势已跟手滚过
就不再叠加(防一划滚两倍)。
* 拖动后的抬手吞掉 TAP(<65px 的拖动 SDK 报 TAP)→ 滑动时不会误开书/误进目录。
* 控件重建(进/退目录、布局/分组切换、刷新)清滚动手势态,避免旧标记吃掉下一次滑动。
* 提示条抽成 shelf_draw_notice(),滚动局部重画时照常重贴。
- 新增宿主回归 test/shelf_scroll_smoke.c(真实 shelf.c + 真实 SDK 绘制 + back_buf
像素断言,27 条):format/folder × list/grid 都能滑;3 本书的目录滑不动;
拖动后不误进目录、干净点击仍能进目录;folder 进出目录仍正常。把 dist=dx 改回
dist=dy 后同一测试 6 条 FAIL(红绿对照证明它抓的就是这个 bug)。
- build_reader.sh 接入该测试;READER_SD_ROOT 加 #ifndef 以便宿主把扫描根指到临时目录。
- app.json 版本 0.1.7/code8 → 0.1.8/code9(同一版本号不发两个构建)。
宿主验证:shelf_scroll_smoke 27/27、shelf_group_smoke 99/99、shelf_index_smoke
170/170、其余 core/seg/chapter/loaders 全绿;reader 1718468B md5 259cb6ed5a60…
(meow_ui.a 用本仓 SDK 源码重编:79 成员全 MIPS32r2 o32)。真机验证待刷机
0.8.49 完成后部署(设备验证需用户手滑,面板无任意滑动注入端点)。
225 lines
14 KiB
Bash
Executable File
225 lines
14 KiB
Bash
Executable File
#!/bin/bash
|
||
# build_reader.sh — os.meow.reader R2 可复现构建:
|
||
# vendor: freetype(静态)/miniz/libmobi/stb/zlib 头 → 交叉 mipsel 编 reader 二进制
|
||
# + 宿主 core 单测(R1+loaders) + qemu-mipsel 冒烟(rdft/book/formats)。
|
||
#
|
||
# 产物:
|
||
# reader mipsel 静态 ELF(链 meow_ui.a + freetype + miniz + libmobi + zlib)
|
||
# test/test_reader_core_host 宿主 core 单测(enc/layout/txt)
|
||
# test/shelf_group_smoke_host 宿主书架分组单测(M27/M31 副题)
|
||
# test/shelf_index_smoke_host 宿主书架索引单测(M32:命中/失效/fail-open/ts 不缓存)
|
||
# test/shelf_index_bench_host 宿主索引耗时基准(M32,只编不跑;bench/indexonly)
|
||
# test/font_resolve_smoke_host 宿主字体路径记忆化单测(M31)
|
||
# test/font_resolve_bench_host 宿主字体 walk/命中耗时对比(M31,只编不跑)
|
||
# test/loaders_smoke_host 宿主四格式 loader 单测
|
||
# test/rdft_smoke_mipsel qemu-mipsel FreeType 冒烟
|
||
# test/book_smoke_mipsel qemu-mipsel TXT 书桥冒烟
|
||
# test/formats_smoke_mipsel qemu-mipsel 四格式书桥冒烟
|
||
#
|
||
# 约束:只写本目录(patch_v2/reader_app/);不改 sdk/;-Wall -Wextra 0 warning(自有代码)。
|
||
# vendor/(第三方源码+构建产物)gitignore,不入仓;build 脚本可复现。
|
||
set -e
|
||
cd "$(dirname "$0")"
|
||
ROOT="$HOME/Project/R3ProII"
|
||
CC="$ROOT/.tools/zig-mipsel-cc"
|
||
SYSROOT="$ROOT/.tools/mipsel-linux-muslsf-cross/mipsel-linux-muslsf"
|
||
HOST_CC="${HOST_CC:-gcc}"
|
||
VENDOR="$PWD/vendor"
|
||
OBJ="$VENDOR/build"
|
||
# qemu-mipsel 运行时冒烟:宿主没装 qemu(如 Termux 无 mipsel user-mode 包)时,
|
||
# 仍编译 mipsel 冒烟二进制,只跳过执行;设 QEMU_BIN=<路径> 可指定其它模拟器。
|
||
QEMU_BIN="${QEMU_BIN:-qemu-mipsel}"
|
||
run_qemu() {
|
||
if [ "${SKIP_QEMU:-0}" = 1 ] || ! command -v "$QEMU_BIN" >/dev/null 2>&1; then
|
||
shift
|
||
echo " SKIP qemu 执行(未找到 $QEMU_BIN):$*"
|
||
return 0
|
||
fi
|
||
timeout "$@"
|
||
}
|
||
mkdir -p "$OBJ"
|
||
|
||
# ---------- 1) vendor 拉取/对齐 ----------
|
||
FT_VER="2.14.3"; MINIZ_URL="https://codeload.github.com/richgel999/miniz/tar.gz/refs/heads/master"
|
||
# libmobi 版本锁定:见 NOTICE「Locked version (commit)」。LGPL-3.0 §4(d) 要求「已分发二进制
|
||
# 对应的 libmobi 源码」与公开源码一致可复现,故不用 refs/heads/master(移动分支),改锁到精确
|
||
# commit SHA(2024-10-29 的 9062742...,与上级代理 agent-332 复验/NOTICE 声明一致,已验证可拉取)。
|
||
LM_URL="https://codeload.github.com/bfabiszewski/libmobi/tar.gz/906274205c11944b628da1c553b255acb1af7c55"
|
||
mkdir -p "$VENDOR"
|
||
fetch_freetype() {
|
||
if [ -n "$FREETYPE_SRC" ] && [ -f "$FREETYPE_SRC/CMakeLists.txt" ]; then cp -r "$FREETYPE_SRC" vendor/freetype-src;
|
||
elif [ ! -d "$VENDOR/freetype-src" ] && [ -f /tmp/freetype/CMakeLists.txt ]; then cp -r /tmp/freetype "$VENDOR/freetype-src";
|
||
elif [ ! -d "$VENDOR/freetype-src" ]; then
|
||
( cd "$VENDOR" && curl -fsSL -o ft.tar.xz "https://download.savannah.gnu.org/releases/freetype/freetype-$FT_VER.tar.xz" \
|
||
&& mkdir -p freetype-src && tar xf ft.tar.xz -C freetype-src --strip-components=1 && rm ft.tar.xz )
|
||
fi
|
||
[ -f "$VENDOR/freetype-src/CMakeLists.txt" ] || { echo "freetype 不可用"; exit 1; }
|
||
}
|
||
fetch_miniz() {
|
||
if [ ! -f "$VENDOR/miniz/miniz.c" ]; then
|
||
( cd /tmp && curl -fsSL -o miniz.tgz "$MINIZ_URL" && mkdir -p miniz_m && tar xzf miniz.tgz -C miniz_m --strip-components=1 \
|
||
&& cp miniz_m/miniz.c miniz_m/miniz.h miniz_m/miniz_common.h miniz_m/miniz_tdef.c miniz_m/miniz_tdef.h \
|
||
miniz_m/miniz_tinfl.c miniz_m/miniz_tinfl.h miniz_m/miniz_zip.c miniz_m/miniz_zip.h "$VENDOR/miniz/" )
|
||
fi
|
||
[ -f "$VENDOR/miniz/miniz.c" ] || { echo "miniz 不可用"; exit 1; }
|
||
}
|
||
fetch_libmobi() {
|
||
# 若 vendor/libmobi 来自旧版(LM_URL 改 pin 前抓的 master),请先删 vendor/libmobi 再重跑,
|
||
# 以确保取到下方锁定的 commit。此处仅在其缺失时拉取。
|
||
if [ ! -f "$VENDOR/libmobi/src/mobi.h" ]; then
|
||
( cd /tmp && curl -fsSL -o lm.tgz "$LM_URL" && mkdir -p lm_m && tar xzf lm.tgz -C lm_m --strip-components=1 \
|
||
&& mkdir -p "$VENDOR/libmobi" && cp -r lm_m/src "$VENDOR/libmobi/src" && cp lm_m/COPYING "$VENDOR/libmobi/COPYING" )
|
||
fi
|
||
[ -f "$VENDOR/libmobi/src/mobi.h" ] || { echo "libmobi 不可用"; exit 1; }
|
||
}
|
||
fetch_stb() { [ -f "$VENDOR/stb/stb_image.h" ] || { mkdir -p "$VENDOR/stb"; cp "$ROOT/patch_v2/sdk/stb_image.h" "$VENDOR/stb/stb_image.h"; }; }
|
||
fetch_freetype; fetch_miniz; fetch_libmobi; fetch_stb
|
||
if [ ! -f "$VENDOR/zlib/zlib.h" ]; then mkdir -p "$VENDOR/zlib"; cp /usr/include/zlib.h /usr/include/zconf.h "$VENDOR/zlib/" 2>/dev/null || true; fi
|
||
|
||
# ---------- 2) FreeType mipsel 静态构建 ----------
|
||
FT_SRC="$VENDOR/freetype-src"; FT_BUILD="$VENDOR/freetype-build"
|
||
if [ ! -f "$FT_BUILD/libfreetype.a" ] || [ -n "$FORCE_FT" ]; then
|
||
rm -rf "$FT_BUILD"
|
||
cmake -S "$FT_SRC" -B "$FT_BUILD" -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER="$CC" \
|
||
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF \
|
||
-DFT_DISABLE_ZLIB=TRUE -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_PNG=TRUE -DFT_DISABLE_HARFBUZZ=TRUE -DFT_DISABLE_BROTLI=TRUE >/dev/null
|
||
cmake --build "$FT_BUILD" -j"$(nproc)" >/dev/null 2>&1
|
||
fi
|
||
FT_INCS="-I$FT_BUILD -I$FT_BUILD/include -I$FT_SRC/include"
|
||
|
||
COREINC="-Icore -Ivendor/miniz -Ivendor/stb -Ivendor/libmobi/src -Ivendor/zlib"
|
||
MZFLAGS="-DMINIZ_NO_ZLIB_COMPATIBLE_NAMES -DMINIZ_NO_TIME"
|
||
|
||
# ---------- 3) miniz + libmobi 对象(mipsel) ----------
|
||
build_mipsel_libs() {
|
||
for f in vendor/miniz/miniz_tinfl.c vendor/miniz/miniz_tdef.c vendor/miniz/miniz_zip.c vendor/miniz/miniz.c; do
|
||
b="$(basename "$f" .c)"; [ -f "$OBJ/mz_$b.o" ] || $CC -Os -static -Wall -Wextra -Ivendor/miniz $MZFLAGS -c "$f" -o "$OBJ/mz_$b.o"
|
||
done
|
||
for f in vendor/libmobi/src/*.c; do b="$(basename "$f" .c)"; [ "$b" = "miniz" ] && continue
|
||
[ -f "$OBJ/lm_$b.o" ] || $CC -Os -static -w -Ivendor/libmobi/src -Ivendor/zlib -c "$f" -o "$OBJ/lm_$b.o"
|
||
done
|
||
# stb_image 的实现由 meow_ui.a 提供(SDK 自 M6.45 收编 stb_image.c.o);此处只编封装,
|
||
# 否则链接 meow_ui.a 时 stbi_* 会与归档内 stb_image.o 重复定义。
|
||
[ -f "$OBJ/rdimg.o" ] || $CC -Os -static -Wall -Wextra -Ivendor/stb -c engine/rdimg.c -o "$OBJ/rdimg.o"
|
||
}
|
||
build_mipsel_libs
|
||
|
||
# ---------- 4) 宿主 loader 单测(miniz/libmobi 用宿主编一遍) ----------
|
||
echo "==> host core test (R1)"
|
||
$HOST_CC -O2 -Wall -Wextra -Icore -I. test/test_reader_core.c core/rdenc.c core/rdlayout.c core/rdtxt.c -o test/test_reader_core_host -lm
|
||
./test/test_reader_core_host
|
||
|
||
echo "==> host seg test (R3.2)"
|
||
$HOST_CC -O2 -Wall -Wextra -Icore test/seg_smoke.c core/seg.c core/rdenc.c -o test/seg_smoke_host -lm
|
||
./test/seg_smoke_host
|
||
|
||
echo "==> host chapter test (R3.3)"
|
||
$HOST_CC -O2 -Wall -Wextra -Icore test/chapter_smoke.c core/rdchapter.c core/seg.c core/rdenc.c -o test/chapter_smoke_host -lm
|
||
./test/chapter_smoke_host
|
||
|
||
echo "==> host shelf group test (M27)"
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp -I../sdk test/shelf_group_smoke.c app/shelf_model.c app/progress.c app/reader_conf.c -o test/shelf_group_smoke_host
|
||
./test/shelf_group_smoke_host
|
||
|
||
echo "==> host shelf index test (M32)"
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp -I../sdk test/shelf_index_smoke.c app/shelf_model.c app/shelf_index.c app/progress.c -o test/shelf_index_smoke_host
|
||
./test/shelf_index_smoke_host
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp -I../sdk test/shelf_index_bench.c app/shelf_model.c app/shelf_index.c -o test/shelf_index_bench_host
|
||
|
||
# M41:书架滚动宿主回归(真实 shelf.c + 真实 SDK 绘制,离屏 480x720)。临时 Books 树写在
|
||
# $TMPDIR 下(不碰设备路径),READER_SD_ROOT 编译期指过去。
|
||
echo "==> host shelf scroll test (M41)"
|
||
SCROLL_ROOT="${TMPDIR:-/tmp}/m41_scroll_sd"
|
||
rm -rf "$SCROLL_ROOT"
|
||
SCROLL_SDK="test_host_stub meow_ui_gfx meow_ui_time meow_ui_sys meow_ui_theme meow_ui_vol meow_ui_log \
|
||
meow_ui_widget meow_ui_input meow_ui_activity meow_ui_dialog meow_ui_ime meow_pinyin meow_ui_str \
|
||
meow_ui_draw meow_ui_view meow_ui_img meow_notify_ipc stb_image meow_jpeg meow_png_stream \
|
||
meow_ui_config meow_ui_nav meow_ui_anim meow_ui_box meow_ui_scroll meow_lazygrid meow_select \
|
||
meow_ui_media meow_ui_audio meow_time32"
|
||
SCROLL_SRC=""
|
||
for f in $SCROLL_SDK; do SCROLL_SRC="$SCROLL_SRC ../sdk/$f.c"; done
|
||
# shellcheck disable=SC2086
|
||
$HOST_CC -O2 -Wall -Wextra -DMEOW_UI_HOST_TEST -DREADER_SD_ROOT="\"$SCROLL_ROOT\"" \
|
||
-I. -Iapp -I../sdk -I../meow_launcherd \
|
||
test/shelf_scroll_smoke.c app/shelf.c app/shelf_model.c app/shelf_index.c app/progress.c \
|
||
app/reader_conf.c app/font_resolve.c $SCROLL_SRC \
|
||
-o test/shelf_scroll_smoke_host -pthread -lm -lz
|
||
./test/shelf_scroll_smoke_host
|
||
rm -rf "$SCROLL_ROOT"
|
||
|
||
echo "==> host font resolve test (M31)"
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp test/font_resolve_smoke.c app/font_resolve.c -o test/font_resolve_smoke_host
|
||
./test/font_resolve_smoke_host
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp test/font_resolve_bench.c app/font_resolve.c -o test/font_resolve_bench_host
|
||
|
||
echo "==> host shelf scan bench (M27,只编不跑;用法 ./test/shelf_scan_bench_host <Books目录> [progress|noop] [轮数])"
|
||
$HOST_CC -O2 -Wall -Wextra -Iapp -I../sdk test/shelf_scan_bench.c app/shelf_model.c app/progress.c -o test/shelf_scan_bench_host
|
||
|
||
echo "==> host loaders test"
|
||
HOBJ="$OBJ/host"; mkdir -p "$HOBJ"
|
||
for f in vendor/miniz/miniz_tinfl.c vendor/miniz/miniz_tdef.c vendor/miniz/miniz_zip.c vendor/miniz/miniz.c; do
|
||
b="$(basename "$f" .c)"; [ -f "$HOBJ/mz_$b.o" ] || $HOST_CC -O2 -Ivendor/miniz $MZFLAGS -c "$f" -o "$HOBJ/mz_$b.o"
|
||
done
|
||
for f in vendor/libmobi/src/*.c; do b="$(basename "$f" .c)"; [ "$b" = "miniz" ] && continue
|
||
[ -f "$HOBJ/lm_$b.o" ] || $HOST_CC -O2 -w -Ivendor/libmobi/src -Ivendor/zlib -c "$f" -o "$HOBJ/lm_$b.o"
|
||
done
|
||
HCORE=""
|
||
for f in rdxml rdhtml rdsb rdzip rdsrc rdepub rdfb2 rdmobi rdcbz rdenc rdtxt; do
|
||
$HOST_CC -O2 -Wall -Wextra $COREINC -c core/$f.c -o "$HOBJ/core_$f.o"
|
||
done
|
||
python3 tools/gen_samples.py >/dev/null
|
||
$HOST_CC -O2 -Wall -Wextra $COREINC test/loaders_smoke.c "$HOBJ"/*.o -lz -lm -o test/loaders_smoke_host
|
||
./test/loaders_smoke_host /tmp/rd_samples
|
||
|
||
# ---------- 5) qemu-mipsel FreeType 冒烟 ----------
|
||
echo "==> mipsel ft smoke"
|
||
$CC -Os -static -Wall -Wextra -Iengine $FT_INCS test/rdft_smoke.c engine/rdft.c "$FT_BUILD/libfreetype.a" -o test/rdft_smoke_mipsel
|
||
run_qemu 120 "$QEMU_BIN" ./test/rdft_smoke_mipsel "${FONT:-$ROOT/font/src/MiSans-Regular.otf}"
|
||
|
||
# ---------- 6) qemu-mipsel 书桥冒烟(TXT + 四格式) ----------
|
||
# rdimg.o 引用 stbi_*,实现只在 sdk/meow_ui.a 里(见步骤 3 注释);冒烟不链 UI 主体,
|
||
# 但必须链该归档才能解析 stbi_*(归档按需只拉 stb_image.o)。
|
||
echo "==> mipsel book smoke (TXT)"
|
||
$CC -Os -static -Wall -Wextra -Iapp -Icore -Iengine $FT_INCS $COREINC test/book_smoke.c \
|
||
app/book.c core/rdenc.c core/rdlayout.c core/rdtxt.c core/seg.c core/rdchapter.c core/rdxml.c core/rdhtml.c core/rdsb.c core/rdzip.c \
|
||
core/rdsrc.c core/rdepub.c core/rdfb2.c core/rdmobi.c core/rdcbz.c engine/rdft.c \
|
||
"$OBJ"/mz_*.o "$OBJ"/lm_*.o "$OBJ"/rdimg.o ../sdk/meow_ui.a "$SYSROOT/lib/libz.a" "$FT_BUILD/libfreetype.a" -o test/book_smoke_mipsel
|
||
run_qemu 120 "$QEMU_BIN" ./test/book_smoke_mipsel "${FONT:-$ROOT/font/src/MiSans-Regular.otf}"
|
||
|
||
echo "==> mipsel formats smoke"
|
||
$CC -Os -static -Wall -Wextra -Iapp -Icore -Iengine $FT_INCS $COREINC test/formats_smoke.c \
|
||
app/book.c core/rdenc.c core/rdlayout.c core/rdtxt.c core/seg.c core/rdchapter.c core/rdxml.c core/rdhtml.c core/rdsb.c core/rdzip.c \
|
||
core/rdsrc.c core/rdepub.c core/rdfb2.c core/rdmobi.c core/rdcbz.c engine/rdft.c \
|
||
"$OBJ"/mz_*.o "$OBJ"/lm_*.o "$OBJ"/rdimg.o ../sdk/meow_ui.a "$SYSROOT/lib/libz.a" "$FT_BUILD/libfreetype.a" -o test/formats_smoke_mipsel
|
||
run_qemu 150 "$QEMU_BIN" ./test/formats_smoke_mipsel "${FONT:-$ROOT/font/src/MiSans-Regular.otf}" /tmp/rd_samples
|
||
|
||
# ---------- 7) reader 二进制(mipsel 静态) ----------
|
||
echo "==> reader binary"
|
||
CORE_L="core/rdenc.c core/rdlayout.c core/rdtxt.c core/seg.c core/rdchapter.c core/rdxml.c core/rdhtml.c core/rdsb.c core/rdzip.c core/rdsrc.c core/rdepub.c core/rdfb2.c core/rdmobi.c core/rdcbz.c"
|
||
ENGINE_L="engine/rdft.c"
|
||
APP_L="app.c app/shelf.c app/shelf_model.c app/shelf_index.c app/font_resolve.c app/reader.c app/book.c app/progress.c app/settings.c app/reader_conf.c app/reader_ipc.c"
|
||
$CC -Os -static -Wall -Wextra -I../sdk -I../meow_launcherd -I. -Icore -Iapp -Iengine $FT_INCS $COREINC \
|
||
$CORE_L $APP_L $ENGINE_L "$OBJ"/mz_*.o "$OBJ"/lm_*.o "$OBJ"/rdimg.o \
|
||
../sdk/meow_ui.a "$SYSROOT/lib/libz.a" "$FT_BUILD/libfreetype.a" -lpthread -o reader
|
||
ls -la reader
|
||
file reader
|
||
md5sum reader
|
||
echo " 运行(qemu): qemu-mipsel ./reader"
|
||
|
||
# ---------- 8) 真机耗时基准(不进发行包:与 reader 同源,只把 app.c 的 main 换成 bench main) ----------
|
||
# 用法(设备):MEOW_FONT_* 等 env 与 App 一致时执行 ./shelf_bench_ondev_mipsel [书...]
|
||
echo "==> ondev shelf bench (not shipped)"
|
||
APP_BENCH_L="app/shelf.c app/shelf_model.c app/shelf_index.c app/font_resolve.c app/reader.c app/book.c app/progress.c app/settings.c app/reader_conf.c app/reader_ipc.c"
|
||
$CC -Os -static -Wall -Wextra -I../sdk -I../meow_launcherd -I. -Icore -Iapp -Iengine $FT_INCS $COREINC \
|
||
test/shelf_bench_ondev.c $CORE_L $APP_BENCH_L $ENGINE_L "$OBJ"/mz_*.o "$OBJ"/lm_*.o "$OBJ"/rdimg.o \
|
||
../sdk/meow_ui.a "$SYSROOT/lib/libz.a" "$FT_BUILD/libfreetype.a" -lpthread -o test/shelf_bench_ondev_mipsel
|
||
ls -la test/shelf_bench_ondev_mipsel
|
||
echo "build_reader OK"
|
||
|
||
# ---------- 9) 真机索引探针(不进发行包;直接调 model/index,无 UI) ----------
|
||
# 用法(设备):MEOW_PROBE_CFG=<TF>/MeowData/m32probe/data ./shelf_index_probe_mipsel load <Books>
|
||
echo "==> mipsel index probe (not shipped)"
|
||
$CC -Os -static -Wall -Wextra -I../sdk -Iapp test/shelf_index_probe.c \
|
||
app/shelf_model.c app/shelf_index.c app/progress.c -o test/shelf_index_probe_mipsel
|
||
ls -la test/shelf_index_probe_mipsel
|