Skip to content

dos.library: GetDeviceProc returns the filesystem packet port in dvp_Port - #197

Merged
sidick merged 1 commit into
sidick:mainfrom
codewiz:getdeviceproc-port
Oct 23, 2026
Merged

sidick merged 1 commit into
sidick:mainfrom
codewiz:getdeviceproc-port

Conversation

@codewiz

@codewiz codewiz commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #186 / #191: with #187 merged, ixemul.library 80.1 programs start and print to the console, but every path-based call (open(), mkdir(), stat(), rename(), unlink(), opendir()) still fails with ENOENT before any packet is sent.

ixemul resolves every path in __plock() (library/__plock.c): GetDeviceProc(), then ACTION_LOCATE_OBJECT and the operation's own packet to dvp_Port. When dvp_Port is NULL it stops there with ERROR_OBJECT_NOT_FOUND:

dp = get_device_proc(name, dp, info, &PI);
if (!info->handler)
  {
    SetIoErr(ERROR_OBJECT_NOT_FOUND);
    break;
  }

#191 already made every lock's fl_Task and every handle's fh_Type name the filesystem packet port (DosState::fs_port_addr), but GetDeviceProc still wrote 0 into dvp_Port. This writes that port there too, and updates the module docs and the two tests that asserted dvp_Port == 0.

With it, ixemul's packets reach handle_fs_packet: ACTION_LOCATE_OBJECT resolves paths, and mkdir() sends ACTION_CREATE_DIR. The actions that are not implemented yet, and a reply that makes them look successful, are in #196.

Test plan

  • cargo test -p volamos-core dosdevproc: 8 pass
  • cargo test --workspace: all pass except exectask::tests::pending_host_break_folds_into_check_signal and pending_host_break_folds_into_wait, which fail the same way on main (02fe8cf) in a full parallel run and pass when run alone
  • cargo clippy --workspace --all-targets: clean
  • ixemul programs: AllocDosObject(DOS_FILEHANDLE) and packet-level file I/O #186's hello-68000 and hello-68020 still print and exit 3, with and without --sanitize
  • an ixemul mkdir("W:x") now sends ACTION_LOCATE_OBJECT and ACTION_CREATE_DIR to the port (before: no packet at all)

🤖 Generated with Claude Code

…Port

ixemul.library sends every path operation to dvp_Port and fails with
ERROR_OBJECT_NOT_FOUND when it is NULL; locks and handles already name
the port sidick#191 answers packets on.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@sidick
sidick merged commit 571778b into sidick:main Oct 23, 2026
9 checks passed
@codewiz
codewiz deleted the getdeviceproc-port branch October 23, 2026 15:14
@sidick sidick mentioned this pull request Oct 23, 2026
4 tasks done
sidick added a commit that referenced this pull request Oct 23, 2026
Fills in the 0.13 changelog: ixemul.library's full path-based file
I/O (GetDeviceProc's dvp_Port, the path packet actions, and Info())
from #197/#198, Supervisor()'s real exception frame unblocking nested
library calls from #199, the dl_TimeReq clock() fix from #194, the
remaining AllocDosObject types (DOS_STDPKT/DOS_CLI) from #187, and
#200's new_lock leak fix. Also documents these in
Supported-Libraries.md (expanded packet-action list, Supervisor's
RTE-anywhere support, dl_TimeReq).

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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.

2 participants