尽快推进:收紧tooldata mmap shim源码锚点

This commit is contained in:
cnc
2026-06-05 09:33:08 +08:00
parent 3c72356c92
commit 9b9e942dd6
2 changed files with 79 additions and 0 deletions

View File

@@ -40,6 +40,38 @@ grep -F 'emcStatus->io.tool.pocketPrepped' \
"$linuxcnc_root/src/emc/tooldata/tool_watch.cc" >/dev/null "$linuxcnc_root/src/emc/tooldata/tool_watch.cc" >/dev/null
grep -F '#define TOOL_MMAP_FILENAME ".tool.mmap"' \ grep -F '#define TOOL_MMAP_FILENAME ".tool.mmap"' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null "$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'bool tool_mmap_is_random_toolchanger(void)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'ans = hptr->is_random_toolchanger;' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'int tool_mmap_creator(EMC_TOOL_STAT const * ptr,int random_toolchanger)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'static int inited=0;' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'hptr->is_random_toolchanger = random_toolchanger;' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'hptr->last_index = 0;' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'int tool_mmap_user()' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'fprintf(stderr,"tool_mmap_user(): tool mmap not available\n");' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'return(-1);' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'void tool_mmap_close()' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'if (!tool_mmap_base) { return; }' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'int tooldata_last_index_get(void)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'tool_mmap_mutex_give(); return -1;' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'int tooldata_find_index_for_tool(int toolno)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'if (toolno == -1) {tool_mmap_mutex_give(); return -1;}' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'if (!hptr->is_random_toolchanger && toolno == 0)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_mmap.cc" >/dev/null
grep -F 'int tool_nml_register(CANON_TOOL_TABLE *tblptr)' \ grep -F 'int tool_nml_register(CANON_TOOL_TABLE *tblptr)' \
"$linuxcnc_root/src/emc/tooldata/tooldata_nml.cc" >/dev/null "$linuxcnc_root/src/emc/tooldata/tooldata_nml.cc" >/dev/null
grep -F 'int tooldata_db_init(char progname_plus_args[]' \ grep -F 'int tooldata_db_init(char progname_plus_args[]' \
@@ -102,6 +134,38 @@ grep -F 'metadata:src/emc/tooldata/tooldata_nml.cc:source basis for wasm-safe to
grep -F 'LinuxCNC source basis: src/emc/tooldata/tooldata_mmap.cc provides these' \ grep -F 'LinuxCNC source basis: src/emc/tooldata/tooldata_mmap.cc provides these' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'bool mmap_created = false;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'bool mmap_random_toolchanger = false;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'bool mmap_creator_called = false;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'int tool_mmap_creator(EMC_TOOL_STAT const *ptr, int random_toolchanger)' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'Error: tool_mmap_creator already called BYE' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'mmap_created = true;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'mmap_random_toolchanger = random_toolchanger;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'last_index = 0;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'int tool_mmap_user(void)' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'tool_mmap_user(): tool mmap not available' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'void tool_mmap_close(void)' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'mmap_created = false;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'bool tool_mmap_is_random_toolchanger(void)' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'return mmap_random_toolchanger;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'int tooldata_last_index_get(void)' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'return -1;' \
core/wasm_shims/tooldata/tooldata_mmap_backend.cc >/dev/null
grep -F 'LinuxCNC source basis: src/emc/tooldata/tooldata_nml.cc and tooldata_db.cc' \ grep -F 'LinuxCNC source basis: src/emc/tooldata/tooldata_nml.cc and tooldata_db.cc' \
core/wasm_shims/tooldata/tooldata_runtime_stubs.cc >/dev/null core/wasm_shims/tooldata/tooldata_runtime_stubs.cc >/dev/null
grep -F 'constexpr int MAX_DB_PROGRAM_ARGS = 10;' \ grep -F 'constexpr int MAX_DB_PROGRAM_ARGS = 10;' \
@@ -235,6 +299,10 @@ for phrase in [
"access(..., X_OK)", "access(..., X_OK)",
"mmap tool table reader utility", "mmap tool table reader utility",
"NML/mmap tool table watcher utility", "NML/mmap tool table watcher utility",
"mmap creator/user/close lifecycle",
"random-toolchanger flag",
"last-index unavailable return",
"in-memory replacement for native mmap",
"inactive-DB return values", "inactive-DB return values",
"./check-linuxcnc-tooldata-source-map.sh", "./check-linuxcnc-tooldata-source-map.sh",
"does not interpret G-code", "does not interpret G-code",

View File

@@ -51,6 +51,17 @@ source-link/shim guard only; it must not add CNC behavior and must not expand th
`tooldata_db_notify()` must return `0` without side effects while `db_live` `tooldata_db_notify()` must return `0` without side effects while `db_live`
is false. is false.
## Mmap Backend Boundaries
- `core/wasm_shims/tooldata/tooldata_mmap_backend.cc` must preserve the
LinuxCNC `tooldata_mmap.cc` export surface for the mmap creator/user/close lifecycle while using an in-memory replacement for native mmap.
- The mmap backend must keep the LinuxCNC random-toolchanger flag and
`last_index` initialization edges from `tool_mmap_creator()`, and
`tooldata_last_index_get()` must preserve the last-index unavailable return.
- `tool_mmap_user()` must keep LinuxCNC's unavailable mmap failure boundary,
and `tool_mmap_close()` must clear the browser-safe in-memory state without
adding filesystem mmap behavior.
## Boundaries ## Boundaries
- Tool table files referenced by switchkins INI files are source coverage only; - Tool table files referenced by switchkins INI files are source coverage only;