Skip to content

Added Win64/VS 2022 port for FileX#94

Merged
fdesbiens merged 1 commit into
eclipse-threadx:devfrom
fdesbiens:win64
Jun 15, 2026
Merged

Added Win64/VS 2022 port for FileX#94
fdesbiens merged 1 commit into
eclipse-threadx:devfrom
fdesbiens:win64

Conversation

@fdesbiens

Copy link
Copy Markdown
Contributor
  • New port: ports/win64/vs_2022/inc/fx_port.h
    • Based on the Win32 port; updated ALIGN_TYPE to ULONG64 for 64-bit pointers, added FX_REGRESSION_TEST hooks from the Linux port, and bumped the port name string to Win64/Visual.
  • New CMake infrastructure: ports/win64/vs_2022/CMakeLists.txt
    • Exposes only the inc/ directory (port is header-only).
  • Updated test/cmake/CMakeLists.txt
    • Added MSVC guards: skip -m32 / GCC coverage flags; locate VS 2022 toolchain; build ThreadX from source alongside FileX via THREADX_SOURCE_DIR.
  • Updated test/cmake/regression/CMakeLists.txt
    • Added MSVC-compatible compile options (/W3 /Zi instead of -Wall -fprofile-arcs); added win64_compat include path for standalone + MSVC builds; added per-test TIMEOUT overrides for the two inherently long-running fault-tolerant tests on Windows.
  • Updated test/cmake/samples/CMakeLists.txt
    • Added MSVC-compatible flag handling.
  • New PowerShell scripts: scripts/build_fx.ps1, scripts/test_fx.ps1, scripts/fx_windows_common.ps1
    • Support all 9 build configurations; -Clean, -Config, -Verbose flags; modelled on the ThreadX Win64 build/test scripts.
  • New Windows compatibility shims for standalone builds: test/regression_test/win64_compat/pthread.h test/regression_test/win64_compat/unistd.h
    • Minimal pthreads (CreateThread / WaitForSingleObject / TerminateThread) and usleep (Sleep) shims so standalone test files compile on MSVC.
  • Fixed test/regression_test/fx_ram_driver_test.c and .h
    • RAM driver: added bounds check so out-of-range sector READs use a safe scratch buffer instead of segfaulting.
    • MSVC: large test buffers (ram_disk_memory_large, large_data_buffer, and standalone-mode ram_disk_memory / ram_disk_memory1) moved from BSS to calloc() via a .CRT\ constructor. This avoids the MSVC PE image 2 GB hard limit (LNK1248) and eliminates demand-zero page- fault overhead that would otherwise slow the test suite.
  • Bulk-fixed 93 fault-tolerant test files
    • [FAULT_TOLERANT_SIZE] -> [FAULT_TOLERANT_SIZE > 0 ? FAULT_TOLERANT_SIZE : 1] so that MSVC C2466 (zero-length array) is not triggered when FX_ENABLE_FAULT_TOLERANT is not defined.
  • Fixed filextestcontrol.c: standalone test runner thread exit
    • The Win64 pthread shim makes pthread_exit() a no-op so that test_control_thread_entry() proceeds to exit(failed_tests), giving ctest the correct process exit code.
  • Fixed common/src/fx_utility_logical_sector_write.c
    • Added missing bounds guard to prevent sector-write past end of RAM disk during fault-tolerant interrupt simulation tests.

All 9 build configurations pass 136/136 regression tests on Win64/VS 2022.

- New port: ports/win64/vs_2022/inc/fx_port.h
  - Based on the Win32 port; updated ALIGN_TYPE to ULONG64 for 64-bit
    pointers, added FX_REGRESSION_TEST hooks from the Linux port, and
    bumped the port name string to Win64/Visual.
- New CMake infrastructure: ports/win64/vs_2022/CMakeLists.txt
  - Exposes only the inc/ directory (port is header-only).
- Updated test/cmake/CMakeLists.txt
  - Added MSVC guards: skip -m32 / GCC coverage flags; locate VS 2022
    toolchain; build ThreadX from source alongside FileX via
    THREADX_SOURCE_DIR.
- Updated test/cmake/regression/CMakeLists.txt
  - Added MSVC-compatible compile options (/W3 /Zi instead of -Wall
    -fprofile-arcs); added win64_compat include path for standalone +
    MSVC builds; added per-test TIMEOUT overrides for the two inherently
    long-running fault-tolerant tests on Windows.
- Updated test/cmake/samples/CMakeLists.txt
  - Added MSVC-compatible flag handling.
- New PowerShell scripts: scripts/build_fx.ps1, scripts/test_fx.ps1,
  scripts/fx_windows_common.ps1
  - Support all 9 build configurations; -Clean, -Config, -Verbose flags;
    modelled on the ThreadX Win64 build/test scripts.
- New Windows compatibility shims for standalone builds:
  test/regression_test/win64_compat/pthread.h
  test/regression_test/win64_compat/unistd.h
  - Minimal pthreads (CreateThread / WaitForSingleObject / TerminateThread)
    and usleep (Sleep) shims so standalone test files compile on MSVC.
- Fixed test/regression_test/fx_ram_driver_test.c and .h
  - RAM driver: added bounds check so out-of-range sector READs use a
    safe scratch buffer instead of segfaulting.
  - MSVC: large test buffers (ram_disk_memory_large, large_data_buffer,
    and standalone-mode ram_disk_memory / ram_disk_memory1) moved from
    BSS to calloc() via a .CRT\ constructor.  This avoids the MSVC
    PE image 2 GB hard limit (LNK1248) and eliminates demand-zero page-
    fault overhead that would otherwise slow the test suite.
- Bulk-fixed 93 fault-tolerant test files
  - [FAULT_TOLERANT_SIZE] -> [FAULT_TOLERANT_SIZE > 0 ? FAULT_TOLERANT_SIZE : 1]
    so that MSVC C2466 (zero-length array) is not triggered when
    FX_ENABLE_FAULT_TOLERANT is not defined.
- Fixed filextestcontrol.c: standalone test runner thread exit
  - The Win64 pthread shim makes pthread_exit() a no-op so that
    test_control_thread_entry() proceeds to exit(failed_tests),
    giving ctest the correct process exit code.
- Fixed common/src/fx_utility_logical_sector_write.c
  - Added missing bounds guard to prevent sector-write past end of
    RAM disk during fault-tolerant interrupt simulation tests.

All 9 build configurations pass 136/136 regression tests on Win64/VS 2022.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@fdesbiens fdesbiens changed the base branch from master to dev June 15, 2026 17:14
@fdesbiens fdesbiens merged commit 7cbe022 into eclipse-threadx:dev Jun 15, 2026
2 checks passed
@fdesbiens fdesbiens deleted the win64 branch June 15, 2026 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant